当应用通过调用Hibernate API与框架发生交互是,需要从持久化的角度关注应用对象的生命周期。持久化生命周期是Hibernate中的一个关键概念,正确的理解生命周期,可以更好地了解Hibernate的实现原理,掌握Hibernate的正确用法。Hibernate框架通过Session来管理Java对象的状态,在持久化生命周期中,Java对象存在着如下三种状态。
1.瞬时状态
通过new创建对象后,对象并没有立刻持久化,它并未与数据库的数据有任何的关联,此时Java对象的状态为瞬时状态。Session对于瞬时状态的Java对象是一无所知的,当对象不再被其他对象引用时,它的所有数据也就丢失了,对象将会被Java虚拟机按照垃圾回收机制处理。
2.持久状态
当对象与Session关联,被Session管理时,他就处于持久状态。处于持久状态的对象拥有数据库标识(数据库中的主键值)。那么,对象是什么时候与Session发生关联的呢?有两种方式:第一种,通过Session的查询接口,或者get()方法,或者load()方法从数据库中加载对象的时候,加载的对象是与数据库表中的一条记录关联的,此时对象与加载它的Session发生关联;第二种,瞬时状态的对象,通过调用Session的save()方法或SaveOrUpdate()方法时,java对象也与Session发生关联。对于处于持久状态的对象,Session会持续跟踪和管理他们,如果对象的内部状态发生了任何变更,Hibernate会选择合适的时机(如事物提交时)将变更固化到数据库中。
3.游离状态
处于持久状态的对象,脱离与其关联的Session的管理后,对象就处于游离状态。处于游离状态的对象,Hibernate无法保证对象所包含的数据与数据库中的记录一致,因为Hibernate已经无法感知对该对象的任何操作。Session提供了连个方法(update()、merge()),将处于游离状态的对象,与一个新的Session发生关联。这是对象的状态就从游离状态重新转换为持久状态。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务