hibernate持久化对象的状态

时间:2021-11-17 08:20:29
1.瞬时对象(Transient Objects)     
       使用new操作符初始化的对象不是立刻就持久化的,他们的状态是瞬时的。
       (1) 不处于Session的缓存中,也可以说,不被任何一个Session实例关联。
       (2) 在数据库中没有对应的记录。
2.持久化对象(Persist Objects)
       持久实例是任何具有数据库标识的实例。它有持久化管理器Session统一管理,持久实例是在事务中进行操作的———他们的状态在事务结束时同数据库进行同步。
       (1) 位于一个Session实例的缓存中,也可以说,持久化对象总是被一个Session实例关联。
       (2) 持久化对象和数据库中的相关记录对应。
       (3) Session在清理缓存时,会根据持久化对象的属性变化,来同步更新数据库。
3.离线对象(Detached Objects)
      Session关闭之后,持久化对象就变为离线对象。离线表示这个对象不能再与数据库保持同步,他们不再受Hibernate管理。
       (1) 不再位于Session的缓存中,也可以说,游离对象不被Session关联。
       (2) 游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对应的记录

          (前提条件是没有其他程序删除了这条记录)。

举例: User   user   = new User();

 

Hibernate中对象的状态: 临时/瞬时状态、持久化状态、游离状态。

ü 临时状态

特点:

直接new出来的对象;  

不处于session的管理;

数据库中没有对象的记录;

ü 持久化状态

当调用sessionsave/saveOrUpdate/get/load/list等方法的时候,对象就是持久化状态。

处于持久化状态的对象,当对对象属性进行更改的时候,会反映到数据库中!

特点:

处于session的管理;

数据库中有对应的记录;

ü 游离状态

特点

不处于session的管理;

数据库中有对应的记录

Session关闭后,对象的状态;


hibernate持久化对象的状态