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

本文详细介绍了Java对象在持久化层的四个状态:临时、持久化、删除和游离,以及它们之间的转换。强调了处于不同状态的对象生命周期和内存管理。同时,讨论了EntityManager和javax.persistence.Query在状态转换中的作用。
摘要由CSDN通过智能技术生成

在这里插入图片描述

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

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

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

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术集锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值