Hibernate的四种状态

纸上得来终觉浅

开始学习Hibernate对象的四种状态,花了一上午的时间来思考:

1.为什么要对Hibernate的对象分为几种状态:

状态是对对象所处所处情境的描述,在对hibernate定义了几种状态之后即方便了为人所达成共识,同时也能更好的理解hibernate的工作机制。

2.如何区分Hibernate的几种状态:

开始的时候我根据下面两个是否进行判断:

1)对象是否在Session缓存中

2)在数据表中是否有记录

可以上述条件进行组合的形式来穷尽四种种状态,但是并不够完全合理。因为四个状态是可以进行转换的,以数据保存流程的形式来区分更为合理,同时也能够使这四种状态包含了对象可能的所有情况 ,看下面一张图。

3)如下图所示:


A:如果对象是刚New出来的,那就是临时状态,这个时候是没有OID的,Session中无,数据库记录无;

B:如果这个时候进行了保存操作,或者从数据库中加载,就会变成持久化状态,这个时候有OID,Session中有,数据库记录有;

C:处于持久化状态,如果关闭Session,就会变成游离状态,这个时候有OID,Session中无,数据库中有(如果其他程序没有把它删除);

D:从持久化状态执行delete或者游离状态执行delete,变为删除状态,这个时候有OID,Session中有或者无,数据库记录无;

其实上面按照2) 中Session和数据库记录有、无的排列组合式也是可以区分的,只是不完全合理,同时有一种情况,即Session无而且数据库记录无的情况,可能是临时状态,也可能是删除状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值