数据的序列化&持久化

1.什么是数据持久化

简单来讲:数据持久化,即就是将数据(内存对象)保存到可以长时间保存的设备(磁盘)的过程。

数据持久化就是让数据在“持久状态”和“瞬间状态”相互转换的一种机制(例如:IO操作,JDBC操作)。

持久状态:系统或应用重启之后数据(内存对象)的状态依然存在。

瞬间状态:系统或应用在工作时可操作的状态。

持久化需要将对象的状态保存到数据库(或者文本文件、xml文件等),也可通过读取持久化的对象状态还原对象(这个操作过程中包含了“序列化”过程)。

2.什么是数据序列化

简单来讲:数据序列化,即就是将数据(内存对象)写入字节流和从字节流中读取对象的过程。

数据序列化可以分为“序列化”和“反序列化”两大部分,分别对应了“对象实例写入字节流”“读取字节流还原对象实例”两个过程。

在Java中实现对象序列化十分简单,只需要对象实现Serializable接口即可。要了解Serializable接口可以参考Java Serializable:明明就一个空的接口嘛一文,讲解十分细致。java.io包中包含两个序列化的类,分别是ObjectOutputStreamObjectInputStream

通常情况下在Java中序列化是自动完成,但是如果需要自己控制序列化过程,则对象需要将Serializable替换为Externalizable。可以利用Externalizable接口的writeExternal()readExternal()方法控制对象的“序列化”和“反序列化”。

注意:由于writeExternal()readExternal()方法都是public方法,因此可能会存在安全隐患,请谨慎使用。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

可以再说说transient关键字么?

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!