Hibernate对象3种状态
来源:互联网 发布:森林减少的数据 编辑:程序博客网 时间:2024/05/23 00:06
我们都知道hibernate中的数据对象有3种状态,那么这三种状态到底是哪种状态,他们之间是如何转换的,这些状态都有什么用,带着这一系列的问题,我们一起对hibernate的3种状态了解一下。
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对象3种状态
- Hibernate的对象有3种状态
- Hibernate中的3种对象状态
- hibernate对象的3种状态
- hibernate的3种对象状态
- 3 Hibernate对象的三种状态
- Hibernate的对象的3种状态
- Hibernate对象的3种状态
- Hibernate对象三种状态
- hibernate 对象三种状态
- Hibernate 对象 三种状态
- Hibernate三种对象状态
- hibernate对象三种状态
- Hibernate对象三种状态
- hibernate对象三种状态
- Hibernate的对象的3种状态(转)
- Hibernate的JAVA对象的3种状态
- hibernate对象的3种状态的转化详解
- VS2010中打开VS2013的C#项目的方法
- SpringMVC处理Date类型的成员变量方法
- [zz]myeclipse开启和关闭html,jsp等页面的可视化编辑器
- 机器学习-广义线性模型
- 集合遍历中操作异常解决
- Hibernate对象3种状态
- C/C++ 笔试、面试题目大汇总2
- Lucene使用说明
- Windows Azure系列-- Azure Table的CRUD操作
- slf4j日志的使用
- AIDL 进程间通信
- Log4j使用说明
- webservice框架jersey简单总结
- Java反转字符串