hibernate 的三种状态理解

来源:互联网 发布:手机淘宝货到付款 编辑:程序博客网 时间:2024/05/11 20:37

hibernate中对象的三大状态
一、transient(临时态)特点:通过new操作创建出来的对象,此时的对象未被纳入session管理,数据库中没有相对应的记录
 
二、persistent(持久化状态
 persistent状态的对象被纳入了session管理,session就相当于Hibernate的一个缓冲区,被纳入session
 管理的对象(持久化对象)时刻被hibernate所监视,persistent态的对象属性一旦发生改变,就会被
 hibernate察觉,并会生成相应的sql语句(但并未立即与数据库交互),当session提交时,hibernate会
 清理缓存(也叫脏数据检查),这时候就会和数据库同步(通过底层的JDBC与数据库交互)。
 注释:hibernate清理缓存的方式,是采用快照比对的方式(持久化对象的每次变动都会被记录下来)
 
三、detached(托管状态/离线状态
 
 detached状态的对象,数据库中存在,但未被纳入session管理。
 如果对detached状态的对象加以修改,那么就还得将其纳入一个新的session对象管理,并且还要显示的
 update(),update后的对象又成为了persistent状态了
 
 detached状态的对象是如何产生的呢?
  有两种方式:
  1、对象被纳入session管理后,此session清空或者关闭时,这是的对象就称为detached态了
  2、可手动的构造detached态的对象,通过new操作,new出来的对象,手动setId()将id设成数据库中
  已经存在的,这时的对象也是detached状态的。(一般不建议采用此法)


0 0
原创粉丝点击