首页 > 代码库 > Hibernate 持久化对象的状态

Hibernate 持久化对象的状态

持久化对象有3种状态:1、持久化状态      2、临时状态      3、游离状态

技术分享
Session 的特定方法能使对象从一个状态转换到另一个状态
临时对象(transient)
•    在使用代理主键的情况下, OID 通常为 null
•    不处于 Session 的缓存中
•    在数据库中没有对应的记录

技术分享
持久化对象(也叫”托管”)(Persist)
•    OID 不为 null
•    位于 Session 缓存中
•    持久化对象和数据库中的相关记录对应
•    Session 在清理缓存时, 会根据持久化对象的属性变化, 来同步更新数据库
•    在同一个 Session 实例的缓存中, 数据库表中的每条记录只对应唯一的持久化对象

技术分享
游离对象(也叫”脱管”)(Detached)
•    OID 不为 null
•    不再处于 Session 的缓存中
•    一般情况需下, 游离对象是由持久化对象转变过来的, 因此在数据库中可能还存在与它对应的记录
Session使用以下方法可以使持久化对象转变成游离对象:
技术分享

 

技术分享

Hibernate 持久化对象的状态