我们都知道hibernate中的数据对象有3种状态:
瞬时状态(Transient):由Java通过new方法创建的对象或者托管、持久状态调运session的delete()方法得到的对象。值只存在与内存中,和数据库中没有任何关联。我么可以通过调运session的save()/seavOrUpdate()方法,将这个内存中的零时对象持久化到数据库中,这样,这个对象就和session有了关联,和数据库也有了关联,就是一个持久状态的对象。如果长时间只存在于内存中不被别的对象引用,那么就会被Java的垃圾回收机制回收,释放内存。
持久状态(Pesistent):由瞬时状态保存(调运session的save()方法)以后或者直接通过Java的方法从session中查询(调运session的get()等方法)得到或者托管状态调运session的update()方法得到的结果对象。对象信息不仅存在于内存中,而且存在于数据库中,并且内存中的和数据库中的信息是完全相同的。我么可以通过调运事物的方法,将持久状态和数据库中的信息脱离干系,这个时候它就变成托管状态,或者我们调运session的delete()方法,将它从数据库中删除,那么它又变成瞬时状态。
托管状态(Detached):由持久状态调运事物的方法(事物结束以后,和session没有关系)以后得到的对象。对象信息存在与内存中,数据库中也有,但是数据库中的信息和对象的信息出来有相同的Id以为,不再有其他的关系,他们可以不同。调运session的update()方法以后,再次将内存中的对象同步到数据中,又变成持久状态。或调运delete()方法,完全和数据库脱离干系变成瞬时状态。如果长时间处于内存中不被别的对象引用,同样会被Java的内存回收机制回收,释放内存。
状态 |
性质 |
来源 |
去处 |
瞬时状态 Transient |
只存在于内存中,数据库中没有它的记录 |
1、由程序直接new()的 2、持久状态删除对象 3、托管状态删除对象 |
1、保存变为持久状态 2、被JVM回收 |
持久状态 Pesistent |
存在于内存和数据库中,而且他们的值完全相同 |
1、由程序直接读取数据库 2、瞬时状态保存 3、托管状态更新 |
1、删除对象变成瞬时状态 2、清理session变成托管状态 |
托管状态 Detached |
存在于内存和数据库中,但是内存中的和数据库中的值除了主键相同外,其他信息可能不同 |
1、持久状态清理session |
1、更新对象变成持久状态 2、删除对象变成持久状态 3、被JVM回收 |
说明:
1、当对象被保存以后,变成持久状态。如果再对对象进行修改,对象数据就变成内存脏数据,此时再提交事物,HIbernate会将内存数据同步到数据库中,会调运update方法,即使没有显示的调运session.update()方法。
2、当托管状态下的对象,再次被session管理以后,直接调运update方法就会将数据库中数据和对象数据同步,对象再次背session管理。
相关推荐
hibernate对象三种状态,有详细的代码介绍三种状态,易理解,有具体代码实现,有详细备注,让你轻松理解三种状态的存在形式
一个关于关于Hibernate对象的状态的描述。
hibernate中session对象的状态详解
Hibernate对象状态以及各种保存方法的区别
Hibernate对象的状态,本文系统地分析了其中的各种状态
本人在厦门邦初培训时候 使用的快速入门精简文档 ...对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。 延迟装载 迫切左外链接 HQL检索方式 QBC检索方式 本地SQL检索方式
NULL 博文链接:https://unddone8373229.iteye.com/blog/1104797
hibernate的各种保存方式的区别以及hibernate对象的三种状态[定义].pdf
hibernate对象三状态及OneToOne&OneToMany&ManyToMany讲解,代码示例,数据库示例!非常全面
hibernate相关配置 对象映射关系 3种状态格式
站在持久化的角度。Hibernate把对象分为4中状态。 临时状态。 持久化状态。游离状态。删除状态。
Hibernate对象的三种状态、状态管理
Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化对象(Persist Objects)、离线对象(Detached ...在Hibernate应用中Java对象的状态 Session的保存、更新、删除、查询方法:
Java面试题57.hibernate对象状态及其转换.mp4
一份我在厦门邦初学习 的快速入门ppt 内容有: ...Hibernate对象关系映射 对象的状态 Hibernate的检索策略 Hibernate检索数据的方式 数据库事务与并发处理 组件及组成关系映射 综合项目应用:Struts+Hibernater
Hibernate中po对象的三种状态分析[借鉴].pdf
05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法
8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 8.3.4 游离对象的特征 8.4 Session接口的详细用法 8.4.1 Session的save()和persist()...
对象-关系映射—Hibernate 培训 (中文) 目录 一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration...四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳实践
本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...