由于 Hibernate 是透明的持久化机制—类不能意识到它们自己的持久能力—编写应用逻辑时不用意识到你所操纵的对象是持久状态还是存在于内存中的临时状态。当应用调用对象的方法时不需要关心它的状态是否是持久的。然而,在持久状态的应用中,只要应用需要把内存中的状态传到数据库(反之亦然)就必须同持久层打交道。你可以调用Hibernate 持久化管理器和查询接口来完成这种操作。当使用那种方式同持久层打交道时,应用关心与持久化相关的对象的状态及生命周期是必要的。我们将把它称为持久化生命周期。对于持久化生命周期,不同的ORM 实现使用不同的术语,定义不同的状态及状态转换。此外,内部使用的对象状态可能与其暴露给客户端应用的状态不同。Hibernate 仅仅定义了三种状态:瞬时、持久和分离,对客户端代码隐藏了其内部实现的复杂性。这一章,我们解释这三种状态:瞬时、持久和分离。让我们在状态图中看看这些状态和它们的转换,如图4.1 所示。你也可以看到调用持久管理器触发转换的方法。在这一节我们讨论这张图;以后你无论什么时候需要一个综述都可以引用它。在其生命周期中,对象可以从瞬时对象转换到持久对象,再转换到分离对象。让我们仔细看看这些状态中的每一个状态。










