孙卫琴的《精通JPA与Hibernate》的读书笔记:持久化层对象的四种状态

孙卫琴的《精通JPA与Hibernate》的读书笔记:持久化层对象的四种状态

站在持久化层的角度,一个Java对象在它的生命周期中,可处于以下四个状态之一:
(1) 临时状态(transient):刚用new语句创建,还没有被持久化,并且不处于持久化缓存中。处于临时状态的Java对象被称为临时对象。
(2) 持久化状态(persistent):已经被持久化,并且加入到持久化缓存中。处于持久化状态的Java对象被称为持久化对象。
(3) 删除状态(removed):不再处于持久化缓存中,并且Session已经计划将其从数据库中删除。处于删除状态的Java对象被称为被删除对象。
(4) 游离状态(detached):已经被持久化,但不再处于持久化缓存中。处于游离状态的Java对象被称为游离对象。

持久化类与持久化对象是不同的概念。持久化类的实例可以处于临时状态、持久化状态、删除状态和游离状态,其中处于持久化状态的实例被称为持久化对象。

下图为Java对象的完整状态转换图,EntityManager以及javax.persistence.Query的特定方法使Java对象由一个状态转换到另一个状态。从该图看出,当Java对象处于临时状态、删除状态或游离状态,只要不被任何变量引用,就会结束生命周期,它占用的内存就可以被JVM的垃圾回收器回收;当处于持久化状态,由于持久化缓存会引用它,因此它始终处于生命周期中。

孙卫琴的《精通JPA与Hibernate》的读书笔记:持久化层对象的四种状态

上一篇:孙卫琴的《精通JPA与Hibernate》的读书笔记:JPA的配置文件


下一篇:孙卫琴的《精通JPA与Hibernate》源代码下载