因为Hibernate拥有透明的持久化机制——类不需要关系其自身的持久化能力——业务逻辑也无需关心它们操作的是持久化状态还是在内存中的临时状态。应用程序在调用一个对象的方法的时候没有必要去关心其是否被持久化了。
然而,在任何带有持久化状态的程序中,在需要保存对象在内存中的状态到数据库的时候,应用程序都需要和持久层打交道。为了完成这项工作,你可以通过调用Hibernate的持久化管理器(Session)和查询接口。当通过这些机制去工作的时候,应用程序有必要关心持久化对象的生命周期和状态。我们把这称之为持久化生命周期。
对于持久化生命周期,不同的ORM实现使用了不同的术语、定义了不同的状态以及状态传输机制。并且,内部使用的对象状态和暴露给客户端的状态往往是不同的。Hibernate仅仅定义了三种状态,隐藏了内部实现的复杂性。在这一部分,我们来解释这三种状态:transient,presisent和detached。
我们来看一下这些状态以及它们在状态图中的转换,图4.1。同时你也可以看到在持久化管理器中触发这些状态的方法的调用。我们在这一部分来讨论这个图,当然在后面需要的时候我们还会回到这个图中。
在它的生命周期,一个对象状态可以从transient到presisent再到detached状态。我们来仔细了解每一个状态。

1391

被折叠的 条评论
为什么被折叠?



