JPA---CRUD操作

来源:互联网 发布:nginx 子域名过滤 编辑:程序博客网 时间:2024/05/16 18:10

对象的四种状态

1.       瞬时状态(new)-----New出来的对象

2.       托管状态(managed)----entitymanager管理的状态,数据更新后放在JDBCpatch处理中,和数据库同步

3.       游离状态(脱管)--------和数据库不同步,数据更新后数据库无记录

4.       删除状态(delete)

 

保存

@Test public void save(){

    EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");

    EntityManager em=factory.createEntityManager();

    em.getTransaction().begin();

       em.persist(new Person("yjj",new Date()));

   //em.persist()=em.save(

    em.getTransaction().commit();

    em.close();

    factory.close();

}

 

查询(id)

1.    EntityManager.find()-----类似与session.get()方法

@Test

    public void findById1(){

    EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");

    EntityManager em=factory.createEntityManager();

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

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

    em.close();

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

entityManager关闭后,此时也可以从缓存中访问

    factory.close();

}

 

2.    EntityManager.getReference()---类似与session.load(),lazy问题

@Test

    public void findById2(){

    EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");

    EntityManager em=factory.createEntityManager();

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

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

    em.close();  //em关闭后,println语句会throw exception

   

    factory.close();

}

 

更新

@Test

    public void updatePerson1(){

           EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");

           EntityManager em=factory.createEntityManager();

           em.getTransaction().begin();

//         Person person=em.getReference(Person.class, 1);

//         person.getName();

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

           person.setName("yjj");

//此时对象出入托管状态,和db同步,setName()mappingdb

           em.getTransaction().commit();

           em.close();

          

           factory.close();

}

 

@Test

    public void updatePerson2(){

           EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");

           EntityManager em=factory.createEntityManager();

           em.getTransaction().begin();

//         Person person=em.getReference(Person.class, 1);

//         person.getName();

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

           em.clear();

//em.clear()表示将entityManager中管理的所有实体bean变成游离状态,

           person.setName("datou");

//此时对象和db不同步,setName不会反应到db

           em.merge(person);

//merge()方法用于将游离状态对象和db同步

           em.getTransaction().commit();

           em.close();

          

           factory.close();

}

 

4删除(delete)

@Test

    public void deletePerson(){

    EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");

    EntityManager em=factory.createEntityManager();

    em.getTransaction().begin();

//      Person person=em.getReference(Person.class, 1);

//      person.getName();

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

    em.remove(person);

//      em.clear();

//      person.setName("datou");

//      em.merge(person);

    em.getTransaction().commit();

    em.close();

   

    factory.close();

    }

原创粉丝点击