hibernate持久化生命周期

持久化生命周期

要掌握session的使用,首先要掌握持久化生命周期,一个持久化类的实例在持久化生命周期中会在不同的状态之间转变。Hibernate定义四种状态。

(1)、瞬时状态(transient)

         该实例是刚用new语句创建的,还没有被持久化,不处于任何session的缓存中。它没有对象标示符值(主键值)。

         特点:不跟任何一个session实例关联。在数据库中没有对应的记录。

(2)、持久化状态(persistent)

         已经被持久化,加入到session缓存中。实例目前与某个session有关联。它拥有对象标示符值,并且可能在数据库中有一个对应的行。Hibernate保证在同一个Session实例的缓存中,数据库中的每条记录只对应唯一的一个持久化实例。

         特点:持久化对象总是被一个session实例关联。持久化实例和数据库中的相关记录对应。Session在清理缓存时,会根据持久化实例的属性数据变化,同步更新数据库。

(3)移除状态(removed)

         如果一个对象已经被计划在一个Session上下文结束时删除,他就处于移除状态,但仍然处于session的缓存中,直到工作单元结束。

         实例处理移除状态时不应该被重用,因为一旦工作单元完成,它就将立即从数据库中被删除。

(4)脱管(detached)状态

         已经被持久化过,但已经不处于session的缓存中。实例曾经与某个session上下文发生过关联,不过那个上下文已经被关闭。它拥有对象标识符值,并且在数据库中可能存在一个对应的行。

         特点:不在位于session的缓存中,即他不再和session关联。但它拥有对象标示符值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值