Java 应用数据持久化与序列化实战
1. 应用数据持久化基础
在 Java 应用开发中,当所有领域数据都包含在其自身的模型中,且与 UI 组件分离后,就需要识别数据模型中需要持久化的部分。并非所有内部数据结构的部分都需要保存,有些部分可能不会随时间变化,或者在某些其他方面存在的情况下可以重新创建。开发者若要保存应用程序的状态,需仔细查看模型中存储在内存的数据,确定必须保存的部分,然后编写将数据从数据结构保存到磁盘以及从磁盘加载数据的例程。
1.1 Java 应用数据存储方式
Java 是面向对象的语言,大多数应用程序都有一组数据类,这些数据类构成了应用程序的数据模型。这些数据类的实例驻留在内存中,应用程序的查看器和控制器组件(UI)与它们交互以实现应用程序的功能。
任何具有属性(在 JavaBean 术语中称为属性)的 Java 类都是数据结构。简单的数据结构可以是一个具有两个 String 属性(用于存储名字和姓氏)的 Person 类。更复杂的类可能包含对其他类的引用,从而形成对象图。对象图是一种图,其中对象是图中的节点,连接是从一个对象实例到另一个对象实例的引用。在序列化类中包含的信息时,必须考虑该类依赖于其他类的数据及其依赖关系等。
1.2 示例应用程序的配置数据模型
以一个通用的图像编辑/绘图程序为例,不同用户对应用程序支持的某些设置可能有不同的偏好。需要持久化的用户偏好或配置信息包括:
- 用户主目录或用于加载和保存文件的默认目录的位置
- 用户最近加载或保存的文件列表
- 应用程序是否应使用选项卡式窗口界面或带有子窗口的多文档界面(MDI)
- 最后使用的前