1.什麼是資料持久化
簡單來講:資料持久化,即就是將資料(記憶體物件)儲存到可以長時間儲存的裝置(磁碟)的過程。
資料持久化就是讓資料在“持久狀態”和“瞬間狀態”相互轉換的一種機制(例如:IO操作,JDBC操作)。
持久狀態:系統或應用重啟之後資料(記憶體物件)的狀態依然存在。
瞬間狀態:系統或應用在工作時可操作的狀態。
持久化需要將物件的狀態儲存到資料庫(或者文字檔案、xml檔案等),也可通過讀取持久化的物件狀態還原物件(這個操作過程中包含了“序列化”過程)。
2.什麼是資料序列化
簡單來講:資料序列化,即就是將資料(記憶體物件)寫入位元組流和從位元組流中讀取物件的過程。
資料序列化可以分為“序列化”和“反序列化”兩大部分,分別對應了“物件例項寫入位元組流”和“讀取位元組流還原物件例項”兩個過程。
在Java中實現物件序列化十分簡單,只需要物件實現Serializable
介面即可。要了解Serializable
介面可以參考Java Serializable:明明就一個空的介面嘛一文,講解十分細緻。java.io
包中包含兩個序列化的類,分別是ObjectOutputStream
和ObjectInputStream
。
通常情況下在Java中序列化是自動完成,但是如果需要自己控制序列化過程,則物件需要將Serializable
替換為Externalizable
。可以利用Externalizable
介面的writeExternal()
與readExternal()
方法控制物件的“序列化”和“反序列化”。
注意:由於writeExternal()
與readExternal()
方法都是public方法,因此可能會存在安全隱患,請謹慎使用。
本作品採用《CC 協議》,轉載必須註明作者和本文連結