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

        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为我们提供的强大功能。也更能够清楚他的设计思路,最终达到更加熟练的应用以及后面的扩展!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。