持久化对象状态和一级缓存

1.持久化对象的三种状态

  1. transient 瞬时态(临时态,自由态):不存在持久化标识OID,尚未与Hibernate Session 关联对象,被认为处于瞬时态,失去引用将被JVM回收        OID就是对象中与数据库主键映射属性,例如Customer类 id属性
  2. persistent 持久态:存在持久化标识OID,与当前session有关联,并且相关联的session没有关闭,并且事务未提交
  3. detached脱管态(离线态,游离态):存在持久化标识OID,但没有与当前session关联,脱离态状态改变Hibernate不能检测到

瞬时与持久化状态区别在于是否在于纳入session管理是否有oid

持久和脱管状态区别在于是否纳入session管理

瞬时与脱管状态是否有OID

 

Hibernate持久化对象的状态转换图

 

1.瞬时状态切换到其它状态  ew出来

  • 瞬时--持久    save      saveorUpdate (都是Session)
  • 瞬时--脱管 book.setId (1);为瞬时对象设置OID

2,持久化对象切换到其它状态    get/load query查询

  • 持久--瞬时     delete (被删除持久化对象不建议再次使用)
  • 持久--脱管     evict(清除一級缓存中某一个对象),close (关闭Session,清除一级缓存) ,.clear (清除一級缓存所直对象)

3,脱管状态切换到其它状态(无法直接得到)

  • 脱管--瞬时      book. setId (null) ;删除对象OID
  • 脱管-挂久       update, saveorUpdate, lock (过时)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值