Hibernate中Java对象的三种状态以及之间的转换 ----Hibernate_4

Hibernate框架通过 Session来管理 Java对象的状态

  1. 瞬时状态
  2. 持久状态
  3. 游离状态

瞬时状态(Transient)

通过new 创建对象之后,并没有立刻持久化,就是没有存储到数据库,还存储在内存中, 这就是瞬时状态,Session对瞬时状态是一无所知的,不受Session管理,如果对象没有被引用,将会被垃圾回收机制处理



持久状态(Persistent)

当对象与Session关联,被Session管理时,它就处于持久状态,处于持久状态的对象拥有数据库标识(主键值)例如刚从数据库中查出的对象


游离状态(Detached)

处于持久状态的对象,脱离预期关联的Session管理后,对象就处于游离状态,Hibernate无法感知该对象的任何操作,



瞬时状态转为持久状态:

   执行 Session的  save()  ,saveOrUpdate() 方法对象从瞬间状态转换为持久状态,执行 Session的get(),load()方法获取对象,该对象的状态就是持久状态


持久状态转为瞬间状态 

    执行Session的delete()方法后 对象由原来的持久状态变为瞬间状态,此时该对象灭有与任何数据库数据关联


持久状态转为游离状态

    执行Session的evict()  ,clear()  ,close()   方法,对象由原来的持久状态转为 游离状态


游离状态转为持久状态

    重新获取Session对象,执行 Session对象的update() ,saveOrUpdate()  方法 对象由游离状态转为瞬间状态 ,再次与Session关联


游离状态转为瞬时状态

    执行Session的delete() 方法  对象由游离状态转为瞬间状态,


处于瞬间状态或游离状态的对象不再被其他对象引用时,会被Java虚拟机按照垃圾机制处理


在执行以上 方法之后必须 提交事务  否则就不会对数据库有影响,  只有提交事务,hibernate才会执行sql语句,当然查询除外


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佛系编码i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值