持久化对象的状态

来源:互联网 发布:ipad怎么看淘宝直播间 编辑:程序博客网 时间:2024/05/19 20:40
站在持久化的角度, Hibernate把对象分为4种状态:
   1) 持久化状态,
   2) 临时状态,         
   3) 游离状态,
   4) 删除状态.
Session的特定方法能使对象从一个状态转换到另一个状态.
 
临时对象(Transient:
在使用代理主键的情况下, OID 通常为 null
不处于 Session 的缓存中
在数据库中没有对应的记录
持久化对象(也叫”托管”)Persist):
OID 不为 null
位于 Session 缓存中
若在数据库中已经有和其对应的记录,持久化对象和数据库中的相关记录对应
Session flush缓存时,会根据持久化对象的属性变化,来同步更新数据库
在同一个 Session 实例的缓存中, 数据库表中的每条记录只对应唯一的持久化对象
删除对象(Removed)
在数据库中没有和其 OID 对应的记录
不再处于 Session 缓存中
一般情况下, 应用程序不该再使用被删除的对象
游离对象(也叫”脱管”)Detached):
OID 不为 null
不再处于 Session 缓存中
一般情况需下, 游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对应的记录
 
0 0