04讲、使用JPA加载_更新_删除对象

package junit.test;

 
 
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
 
import org.junit.BeforeClass;
import org.junit.Test;
 
import cn.itcast.bean.Person;
 
 
public class PersonTest {
 
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }
    //保存
    @Test public void save(){
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
        //sessionFactory-->session-->begin事务
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();//开始事务
        em.persist(new Person("传智播客11"));
        em.getTransaction().commit();
        em.close();
        factory.close();
    }
    //查询1
    @Test public void getPerson(){
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
        EntityManager em = factory.createEntityManager();
        Person person = em.find(Person.class, 27l);//相当于get
        System.out.println(person.getName());
        em.close();
        factory.close();
    }
    //查询2
    @Test public void getPerson2(){
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
        EntityManager em = factory.createEntityManager();
        Long a1 = 27l;
        Person person = em.getReference(Person.class, a1);//相当于load
        System.out.println(person.getName());//只要我们第一次获取数据时才会初始化数据
        em.close();
        factory.close();
    }
    
    //new 
    //managed 托管
    //游离(脱管)
    //删除
    //更新1 只能更新处于托管状态的数据
    @Test public void updatePerson(){
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();
        Person person = em.find(Person.class, 27l);
        person.setName("老张");
        em.getTransaction().commit();
        em.close();
        factory.close();
    }
    //更新2
    @Test public void updatePerson2(){
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();
        Person person = em.find(Person.class, 27l);
        em.clear();//把实体管理中的所有实体变成游离状态(处于游离状态的数据更新时不能同步回数据库)
        person.setName("老黎"); 
        em.merge(person);//把游离状态的数据同步回数据库。
        em.getTransaction().commit();
        em.close();
        factory.close();
    }
    //删除
    @Test public void delete(){
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
        EntityManager em = factory.createEntityManager();
        em.getTransaction().begin();
        Person person = em.find(Person.class, 27l);
        em.remove(person);
        em.getTransaction().commit();
        em.close();
        factory.close();
    }
}
posted @ 2013-02-22 11:03  范开胜  阅读(220)  评论(0编辑  收藏  举报