JPA中Bean对象的状态

2014-06-16 summer 更多博文 » 博客 » GitHub »

jpa

原文链接 http://fee.im/2014/06/JPA-Bean-Status/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


再JPA小例子中,提到了什么托管、什么游离状态,弄得我一头雾水,具体google了一下顿时明白了。

JPA中bean有四种状态:新建、托管、游离、删除。

  1. new Person();对象是处于新建状态;
  2. 当使用em.getTransaction().begin();开启事物后,执行下面的代码
Person person = em.find(Person.class,1); 

此时bean处于托管状态,这个对象发生改变EntityManager都知道。

em.setName("test");
em.getTransaction().commit();

此时会去更新数据库

  1. 当调用em.clear();等方法时,bean变成游离状态 通过调用em.merge(person);把数据同步到数据库

4.认为删除对象或者垃圾回收掉