首页 > 代码库 > hibernate持久化对象三种状态及其转换

hibernate持久化对象三种状态及其转换

持久化类类三种状态介绍
1. 瞬时态:也叫做临时态或自由态,它一般指我们 new 出来的对象,它不存在 OID,
     与 hibernate session 无关联,在数据库中也无记录。它使用完成后,会被 jvm 直接
     回收掉,它只是用于信息携带。
简单说:无 OID 与数据库中的信息无关联,不在 session 管理范围内。
2. 持久态:在 hibernate session 管理范围内,它具有持久化标识 OID 它的特点,在事
     务未提交前一直是持久态,当它发生改变时, hibernate 是可以检测到的。
简单说:有 OID session 管理,在数据库中有可能有,也有可有没有。
3. 托管态:也叫做游离态或离线态,它是指持久态对象失去了与 session 的关联,托
     管态对象它存在 OID,在数据库中有可能存在,也有可能不存在。  
     对于托管态对象,它发生改变时 hibernet 不能检测到。

 

持久化类三种状态切换

技术分享

1. 瞬时态(new 出来的)
 瞬时------>持久 save saveOrUpdate
 瞬时----->脱管(游离) 手动设置 oid
2. 持久态 它是由 session 管理
 持久------->瞬时 delete() 被删除后持久化对象不在建议使用
 持久----->脱管 注意:session 它的缓存就是所说的一级缓存
 evict(清除一级缓存 中指定的一个对象)
 clear(清空一级缓存)
 close(关闭,清空一级缓存)
3. 脱管态 (它是无法直接获取)
 脱管----->瞬时 直接将 oid 删除
 脱管---->持久 update saveOrUpdate lock(过时)

hibernate持久化对象三种状态及其转换