1.Hibernate的对象有3种状态
分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。
这3个状态是hibernate里pojo对象得3个状态,个人觉得这个对象始终都是pojo,而在这3个状态中得vo和po只是它这时得一个表象而已(即它这时得状态和po或vo状态相同),并不能就说它此时是一个vo或po对象。而且po是根据具体orm框架生成得象JDO和hibernate 生成它得机制就不一样。这里说po只是广义得描述一个状态。
(1) 瞬时态
由new命令开辟内存空间的java对象,
eg. Person person = new Person("amigo", "女");
如果没有变量对该对象进行引用,它将被java虚拟机回收。
瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的 save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。
(2)持久态
处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识
。如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。
当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下。
持久对象具有如下特点:
1. 和session实例关联;
2. 在数据库中有与之关联的记录。
(3)脱管态
当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。
脱管对象拥有数据库的识别值,可通过update()、saveOrUpdate()等方法,转变成持久对象
。
脱管对象具有如下特点:
1. 本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;
2. 比瞬时对象多了一个数据库记录标识值。
分享到:
相关推荐
Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题 Hibernate教程
Hibernate 笔试题及答案 比较实用的Hibernate试题
hibernate测试题,可以做一些练习!
Hibernate笔试题.doc
SVSE-S3冲刺题-Hibernate笔试题
收集经典Hibernate试题,可以作为参考,相信一定会有所收获!
包括struts, spring ,hibernate可能考到的问题,如struts1的流程,strtus2的流程,spring的aop相关等等常见题型。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
北大青鸟Hibernate内测笔试题。不符答案。要求自己做。
Hibernate常见笔试题_csdn_sty945.pdf
Spring,hibernate,struts常见的面试笔试题汇总
SSH(Struts,Spring,Hibernate)笔试题与面试题汇总整理.docx
Spring,hibernate,struts的面试笔试题 Spring,hibernate,struts的面试笔试题
Spring,hibernate,struts的面试笔试题.doc
自己整理的一些面试题 答案有什么不妥之处,还请多多请教
1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭...
Spring,hibernate,struts的面试笔试题(含答案
Spring,hibernate,struts的面试笔试题(答案)