hibernate 的三种状态理解

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状态的。(一般不建议采用此法)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值