Hibernate(三):三种实例状态

一,Hibernate实例状态


可以由图可知Hibernate有三种实例化状态:临时状态(Transient),持久化状态(Persistent),游离状态(Detached)

1.临时状态(Transient):

  •  实例对象是通过Java的new关键字开辟内存空间创建的Java对象。
  •  没有纳入Hibernate的Session管理(没有被持久化)
  •  如果没有变量对他引用,将被JVM回收
  •   与数据库没有任何关联(数据库中没有记录),仅是一个信息携带的载体
  • 在使用代理主键的情况下,OID通常为null

2.持久化状态(Persistent):

  • 存在于数据库数据关联,与会话状态(Session)和事务(Transaction)关联在一起
  •  当持久化对象发生改动时并不会立即执行数据库操作,只有当事务结束了,才会更新数据库,保证持久化对象与数据库操作的同步性
  • OID不为null
  • 位于Session的缓存中
  • Session在flush缓存是,会根据持久化对象的属性变化,来同步更新数据库
  • 在同一个Session实例的缓存中,数据库表中的每一条记录只对应唯一的持久化对象

 3.游离状态(Detached):

  • 当持久化对象的Session关闭后,这个对象就会从持久化状态改变成游离状态。
  •  存在着与数据库的管理
  •  不在Hibernate的Session管理范围内
  •   如果重新关联到那个Session上,就从游离状态改变成持久化状态对象



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值