版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qwl755/article/details/84619933
1.持久化对象的三种状态
- transient 瞬时态(临时态,自由态):不存在持久化标识OID,尚未与Hibernate Session 关联对象,被认为处于瞬时态,失去引用将被JVM回收 OID就是对象中与数据库主键映射属性,例如Customer类 id属性
- persistent 持久态:存在持久化标识OID,与当前session有关联,并且相关联的session没有关闭,并且事务未提交
- 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 (过时)