jpa对表的crud

1.1.  Jpa对表的crud操作

1.1.1.  增加

public void save() {

       Person person = new Person("aaa",121);

       entityManager.persist(person);//持久化一个对象,将数据保存到数据库中

    }

1.1.2.  修改

public void update(){

       Person person = entityManager.find(Person.class, 1);//相当于hibernate的get方法,不会延迟加载,没有找到会返回null

       person.setName("bbb");

    }

1.1.3.  删除

public void delete(){

       Person person = entityManager.find(Person.class, 3);

       entityManager.remove(person);

    }

1.1.4.  查询

 

public void findPersonById(){

       //相当于hibernate的get方法,不会延迟加载,没有找到会返回null

       Person person = entityManager.find(Person.class, 1);      

       entityManager.clear();

       System.out.println(person.getName());

    }

   

    public void findPersonById2(){

       //相当于hibernate的load方法,不会延迟加载,没有找到在真正使用的时候会报异常

       Person person = entityManager.getReference(Person.class, 1);

       entityManager.clear();//将所有的持久态的对象变为游离态

       //System.out.println(person.getName());//报异常

       entityManager.merge(person);//将游离态的对象变为持久态

    }

1.1.5.  源代码

PersonDao.java

package com.morris.dao.impl;

 

import javax.persistence.EntityManager;

import javax.persistence.Persistence;

 

import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.Test;

 

import com.morris.entity.Person;

 

public class PersonDao {

   

    private static EntityManager entityManager;

   

    @BeforeClass

    public static void before() {

       entityManager = Persistence.createEntityManagerFactory("jpaDemo").createEntityManager();

   

      

       entityManager.getTransaction().begin();

   

    }

   

    @Test

    public void findPersonById(){

       //相当于hibernate的get方法,不会延迟加载,没有找到会返回null

       Person person = entityManager.find(Person.class, 1);

      

      

       //System.out.println(person.getName());

      

       entityManager.clear();

      

       System.out.println(person.getName());

      

      

 

    }

   

    @Test

    public void findPersonById2(){

       //相当于hibernate的load方法,不会延迟加载,没有找到在真正使用的时候会报异常

       Person person = entityManager.getReference(Person.class, 1);

      

      

       entityManager.clear();//将所有的持久态的对象变为游离态

      

       //System.out.println(person.getName());//报异常

      

       entityManager.merge(person);//将游离态的对象变为持久态

      

      

       //System.out.println(person.getName());//报异常

      

      

 

    }

 

    @Test

    public void save() {

      

       Person person = new Person("aaa",121);

      

       entityManager.persist(person);//持久化一个对象,将数据保存到数据库中

    }

   

    @Test

    public void delete(){

       Person person = entityManager.find(Person.class, 3);

      

       entityManager.remove(person);

    }

   

    @Test

    public void update(){

      

       Person person = entityManager.find(Person.class, 1);//相当于hibernate的get方法,不会延迟加载,没有找到会返回null

      

       person.setName("bbb");

      

      

      

    }

   

    @AfterClass

    public static void after(){

       entityManager.getTransaction().commit();

       entityManager.close();

    }

 

}

 

 

你可能感兴趣的:(jpa,crud)