持久化对象状态和一级缓存

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qwl755/article/details/84619933

1.持久化对象的三种状态

  1. transient 瞬时态(临时态,自由态):不存在持久化标识OID,尚未与Hibernate Session 关联对象,被认为处于瞬时态,失去引用将被JVM回收        OID就是对象中与数据库主键映射属性,例如Customer类 id属性
  2. persistent 持久态:存在持久化标识OID,与当前session有关联,并且相关联的session没有关闭,并且事务未提交
  3. detached脱管态(离线态,游离态):存在持久化标识OID,但没有与当前session关联,脱离态状态改变Hibernate不能检测到

瞬时与持久化状态区别在于是否在于纳入session管理是否有oid

持久和脱管状态区别在于是否纳入session管理

瞬时与脱管状态是否有OID

Hibernate持久化对象的状态转换图

1.瞬时状态切换到其它状态  ew出来

  • 瞬时--持久    save      saveorUpdate (都是Session)
  • 瞬时--脱管 book.setId (1);为瞬时对象设置OID

2,持久化对象切换到其它状态    get/load query查询

  • 持久--瞬时     delete (被删除持久化对象不建议再次使用)
  • 持久--脱管     evict(清除一級缓存中某一个对象),close (关闭Session,清除一级缓存) ,.clear (清除一級缓存所直对象)

3,脱管状态切换到其它状态(无法直接得到)

  • 脱管--瞬时      book. setId (null) ;删除对象OID
  • 脱管-挂久       update, saveorUpdate, lock (过时)

猜你喜欢

转载自blog.csdn.net/qwl755/article/details/84619933