码迷,mamicode.com
首页 > Web开发 > 详细

千山万水之Hibernate(二)——Hibernate的三态

时间:2015-04-01 00:25:51      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

        Session是Hibernate向应用程序提供的操纵数据库的最主要的接口,我们可以通过Session来操作Java对象,完成对应数据库的操作。从根据Session管理的角度来看需要持久化的对象可以分为三种状态:Transient、Persistent、Detached。它们之间的关系如图所示:

技术分享

        Transient(瞬时):没有被Session所管理(即不处于Session的缓存中)的持久化对象所处的状态。刚用new语句创建,还没有被持久化。
        Persistent(持久化):已经被持久化,已经加入到Session缓存中,当提交事务清理缓存时,将同步到数据库。
        Detached(游离状态):已经被持久化,但不处于Session的缓存中。
        由此可见,java持久化对象状态是以是否被session管理以及是否持久化到数据库进行区分的。
        从上图我们也可以看出,通过调用session接口方法,可以改变java对象所处的状态,比如在调用save方法时,可以使java对象转变为持久化对象;close方法可使java对象由持久化状态转变为游离状态。上图中的所标示出的方法也将是我们继续细节上的学习。
        
特征与进入条件
技术分享
       Transient对象与Detached的相同之处在于两者都不被Session管理,而两者的不同则在于Detached对象在DB中可能存在对应的记录,而Transient对象在DB中没有对应记录。

总结:
        我们在使用Hibernate的时候,需要掌握它的基本机制原理,这样能够更方便的理解和应用Hibernate为我们提供的强大功能。也更能够清楚他的设计思路,最终达到更加熟练的应用以及后面的扩展!

千山万水之Hibernate(二)——Hibernate的三态

标签:

原文地址:http://blog.csdn.net/lfsfxytgb9_lyg/article/details/44789309

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!