資料的序列化&持久化

Mr_Yan發表於2019-06-27

1.什麼是資料持久化

簡單來講:資料持久化,即就是將資料(記憶體物件)儲存到可以長時間儲存的裝置(磁碟)的過程。

資料持久化就是讓資料在“持久狀態”和“瞬間狀態”相互轉換的一種機制(例如:IO操作,JDBC操作)。

持久狀態:系統或應用重啟之後資料(記憶體物件)的狀態依然存在。

瞬間狀態:系統或應用在工作時可操作的狀態。

持久化需要將物件的狀態儲存到資料庫(或者文字檔案、xml檔案等),也可通過讀取持久化的物件狀態還原物件(這個操作過程中包含了“序列化”過程)。

2.什麼是資料序列化

簡單來講:資料序列化,即就是將資料(記憶體物件)寫入位元組流和從位元組流中讀取物件的過程。

資料序列化可以分為“序列化”和“反序列化”兩大部分,分別對應了“物件例項寫入位元組流”“讀取位元組流還原物件例項”兩個過程。

在Java中實現物件序列化十分簡單,只需要物件實現Serializable介面即可。要了解Serializable介面可以參考Java Serializable:明明就一個空的介面嘛一文,講解十分細緻。java.io包中包含兩個序列化的類,分別是ObjectOutputStreamObjectInputStream

通常情況下在Java中序列化是自動完成,但是如果需要自己控制序列化過程,則物件需要將Serializable替換為Externalizable。可以利用Externalizable介面的writeExternal()readExternal()方法控制物件的“序列化”和“反序列化”。

注意:由於writeExternal()readExternal()方法都是public方法,因此可能會存在安全隱患,請謹慎使用。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章