`
yaasshole
  • 浏览: 666949 次
文章分类
社区版块
存档分类
最新评论

hibernate面试题 --- Hibernate的对象状态是什么?并做详细说明

 
阅读更多
Hibernate的对象状态是什么?并做详细说明
 Hibernate的对象状态其实就是session中持久化类的实例的对象状态,了解了持久化类的状态,才可以正确的运用session中的方法。
 Hibernate的对象状态为瞬时状态、持久状态、脱管状态
(1)瞬时状态

该实例是刚用new语句创建的,还没有被持久化,不处于任何session的缓存中,它没有对象标识符值。如果没有变量对该对象进行引用,它将被java虚拟机回收。

特点:不跟任何一个Session实例关联,在数据库中没有任何对应的记录
(2)持久状态
 已经被持久化,加入到session缓存中,实例目前与某一个session有关联,它拥有对象标识符值,并且可能在数据库中有一个对应的行,Hibernate保证在同一个session实例的缓存中,数据库中的每一条记录只对应唯一的持久化对象
特点:持久化对象总是被一个session实例关联,持久化实例和数据库的相关记录对应,session清理缓存时,会根据持久化实例的属性数据变化,同步更新数据库,总结一句话就是:和session实例关联,在数据库中有对应的记录
(3)脱管状态
 已经被持久化过,但已经不处于session缓存中,实例曾经与某一个session上下文发生过关联,不过与某持久对象关联的session被关闭了,它拥有对象表示符值,并且在数据库中可能存在一个对应的行
 特点:
1.不再位于session缓存中,即它不再和session关联

2.本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;

3.比瞬时对象多了一个数据库记录标识值


  


  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics