1. 程式人生 > >持久化類7個規範以及持久化類為什麼要實現Serializable序列化

持久化類7個規範以及持久化類為什麼要實現Serializable序列化

PO(Persistence Object)持久化類7個規範

1.公有類
2.公有無參構造
3.私有屬性
4.公有的getter與setter
5.實現java.io.Serializable介面
6.不能用final修飾
7.如果是基礎 型別,要使用它的包裝類

為什麼要實現Serializable序列化?

1.什麼是Serializable介面?
一個物件序列化的介面。
2.什麼是序列化?
將物件的狀態資訊轉化為可儲存或傳輸的形式的過程。
程式的執行機制是:程式在執行時例項化出物件,這些物件存在於記憶體中,隨著程式執行停止而消失(也就是匿名物件將會被垃圾回收器回收掉,這是堆記憶體的知識,物件儲存在堆記憶體中),但如果我們想把某些物件(一般都是各不相同的屬性)儲存下來或者傳輸給其他程序,在程式終止執行後這些物件仍然存在,可以在程式再次執行時讀取這些物件的資訊,或者在其他程式中利用這些儲存下來的物件資訊恢復成例項物件。這種情況下就要用到物件的序列化和反序列化。
在序列化期間,物件將其當前狀態寫入到臨時儲存區或永續性儲存區,之後,便可以通過從儲存區中讀取或反序列化物件的狀態資訊,來重新建立該物件。
3.什麼情況下要實現erializable介面?


(1)當你想把記憶體中的物件寫入到硬碟的時候;
比如說你的記憶體不夠用了,那計算機就要將記憶體裡面的一部分物件暫時的儲存到硬碟中,等到要用的時候再讀入到記憶體中,硬碟的那部分儲存空間就是所謂的虛擬記憶體。在比如過你要將某個特定的物件儲存到檔案中,我隔幾天在把它拿出來用,那麼這時候就要實現Serializable介面;
(2)當你想用套接字在網路上傳送物件的時候(另一個說法就是當我們需要把物件的狀態資訊通過網路進行傳輸,或者需要將物件的狀態資訊持久化,以便將來使用時都需要把物件進行序列化。);
在進行java的Socket程式設計的時候,你有時候可能要傳輸某一類的物件,那麼也就要實現Serializable介面;最常見的你傳輸一個字串,它是JDK裡面的類,也實現了Serializable介面,所以可以在網路上傳輸。
(3)當你想通過RMI傳輸物件的時候;

如果要通過遠端的方法呼叫(RMI)去呼叫一個遠端物件的方法,如在計算機A中呼叫另一臺計算機B的物件的方法,那麼你需要通過JNDI服務獲取計算機B目標物件的引用,將物件從B傳送到A,就需要實現序列化介面。