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