数据的序列化&持久化
1.什么是数据持久化
简单来讲:数据持久化,即就是将数据(内存对象)保存到可以长时间保存的设备(磁盘)的过程。
数据持久化就是让数据在“持久状态”和“瞬间状态”相互转换的一种机制(例如:IO操作,JDBC操作)。
持久状态:系统或应用重启之后数据(内存对象)的状态依然存在。
瞬间状态:系统或应用在工作时可操作的状态。
持久化需要将对象的状态保存到数据库(或者文本文件、xml文件等),也可通过读取持久化的对象状态还原对象(这个操作过程中包含了“序列化”过程)。
2.什么是数据序列化
简单来讲:数据序列化,即就是将数据(内存对象)写入字节流和从字节流中读取对象的过程。
数据序列化可以分为“序列化”和“反序列化”两大部分,分别对应了“对象实例写入字节流”和“读取字节流还原对象实例”两个过程。
在Java中实现对象序列化十分简单,只需要对象实现Serializable
接口即可。要了解Serializable
接口可以参考Java Serializable:明明就一个空的接口嘛一文,讲解十分细致。java.io
包中包含两个序列化的类,分别是ObjectOutputStream
和ObjectInputStream
。
通常情况下在Java中序列化是自动完成,但是如果需要自己控制序列化过程,则对象需要将Serializable
替换为Externalizable
。可以利用Externalizable
接口的writeExternal()
与readExternal()
方法控制对象的“序列化”和“反序列化”。
注意:由于writeExternal()
与readExternal()
方法都是public方法,因此可能会存在安全隐患,请谨慎使用。
本作品采用《CC 协议》,转载必须注明作者和本文链接
可以再说说transient关键字么?