“持久化 Java 对象”(Persistent Java Object)是指 能够被永久保存到某种存储介质中(如数据库、文件系统)的 Java 对象。
详细一点:
持久化(Persistence)是将程序数据在持久状态(如数据库、磁盘文件)与瞬时状态(如内存)间转换的机制,旨在防止数据丢失并降低存储成本。其核心技术包括数据的存储(Save)、读取(Load)和状态检查(Exists),主流实现方式涵盖数据库操作、文件存储及对象序列化(如JDBC、XML)等。
简单来说:
持久化(Persistence)= 对象的状态可以在程序结束后继续存在,下次运行时还能恢复出来。
🌱 一、基本概念
在 Java 程序运行时,普通对象(例如 new Person())存在于 内存(JVM 堆内) 中,程序一结束就消失。
而“持久化对象”则会:
-
把它的状态(字段数据)保存到数据库或文件;
-
程序下次启动时,可以重新加载并恢复成原始对象。
因此,持久化对象的生命周期比 JVM 更长。
🧩 二、举个例子
1. 非持久化对象
Person p = new Person("Alice", 20);
程序退出后,p 消失。
2. 持久化对象(示例1:手动保存)
Person p = new Person("Alice", 20);
saveToFile(p); // 将对象序列化为文件
下次运行:
Person p = loadFromFile(); // 从文件反序列化
这样,p 的状态被“持久化”到文件中。
3. 持久化对象(示例2:使用 ORM 框架,如 Hibernate / JPA)
@Entity
public class Person {
@Id
private Long id;
private String name;
private int age;
}
使用 Hibernate 保存:
Person p = new Person("Alice", 20);
entityManager.persist(p); // 保存到数据库
此时,p 就是一个 持久化对象(Persistent Object),它的状态被保存进数据库中表 person。
🧠 三、持久化对象的生命周期(以 Hibernate 为例)
| 状态 | 含义 |
|---|---|
| Transient(瞬时态) | 刚创建,还没保存到数据库中 |
| Persistent(持久态) | 已被持久化上下文(如 Hibernate Session)管理,并已保存到数据库 |
| Detached(游离态) | 持久态对象的会话已关闭,不再被管理,但数据仍存在于数据库中 |
| Removed(删除态) | 对象已被标记为删除,提交事务后会从数据库中删除 |
🗄️ 四、常见的 Java 持久化方式
| 方式 | 特点 |
|---|---|
Java 序列化 (ObjectOutputStream) | 把对象保存成二进制文件,简单但灵活性差 |
| JDBC | 直接通过 SQL 操作数据库,手工映射字段 |
| JPA / Hibernate / MyBatis | 使用 ORM 框架自动将 Java 对象映射为数据库表 |
| JSON / XML / YAML | 把对象序列化为文本格式,适合配置或网络传输 |
| NoSQL 存储 (MongoDB, Redis) | 对象以文档或键值形式持久化 |
📦 五、总结一句话
持久化 Java 对象 是指能将其状态保存到长期存储介质(数据库或文件)中,并能在程序重启后恢复使用的对象。
它是“Java 对象生命周期延伸”的关键概念,常与 ORM 框架(如 Hibernate、JPA) 一起使用。
4021

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



