java序列化和持久化總結

什麼是序列化?

通俗點的來說,程序運行的時候,會產生很多對象,而對象信息也只是在程序運行的時候纔在內存中保持其狀態,一旦程序停止,內存釋放,對象也就不存在了。怎麼能讓對象永久的保存下來呢?對象序列化,瞭解下——
把Java對象轉換爲字節序列的過程稱爲對象的序列化。把字節序列恢復爲Java對象的過程稱爲對象的反序列化。 實現java.io.Serializable接口的類對象可以轉換成字節流(序列化)或從字節流恢復(反序列化),不需要在類中增加任何代碼。
序列化 : 把對象轉換 爲二進制數據(如網絡傳輸,存儲數據庫等),必須實現序列化接口 (java.io.Serializable).
public class Setting implements Serializable
{
    private static final long serialVersionUID = -1478999889661796840L;
    //略
}
serialVersionUID的作用是對持久化對象的序列化的版本控制,控制各版本反序列化時是否兼容。Java的序列化機制是通過在運行時判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM會把傳來的字節流中的serialVersionUID與本地相應類的serialVersionUID進行比較,如果相同就認爲是一致的,可以進行反序列化,否則就會出現序列化版本不一致的異常。
首先要說的是,Hibernate中ORM裏對應的映射文件bean,必須實現序列化.因爲bean裏的數據需要存入數據庫(要轉化爲二進制保存),進行存取工作.
JAVA類的數據 ,如果要進行相關的存儲工作(如寫文件,網絡傳輸,寫數據庫等),那麼這個數據的類 就必須實現序列化接口 (java.io.Serializable).


什麼是持久化?
序列化是能夠實現對象的寫入和寫出,這樣在此基礎上,持久化就水到渠成了。持久化是將程序數據在持久狀態和瞬時狀態間轉換的機制。JDBC就是一種持久化機制。文件IO也是一種持久化機制。在一定週期內保持不變就是持久化,持久化是針對時間來說的。持久化就是把內存中的對象保存到外存中,讓以後能夠取回。而保存和取回的過程就是經過序列化和對象io完成的。
序列化是爲了解決對象的傳輸問題,使對象傳輸可以在線程之間、進程之間、內存外存之間、主機之間進行。我之所以在這裏提到序列化,是因爲我們可以利用序列化來輔助持久化。
如果按照存儲介質和生命週期的長短劃分,所有的數據都以兩種形式存在,其中一種是保存於內存中的運行時對象,另一種則是存儲於持久化物理介質中的文件,比如數據庫文件等。數據的持久化關注於相同的數據在不同形態數據之間的轉化,解決的是如何將內存對象持久化存儲,以及從物理介質中加載數據並創建內存對象。

總結的不錯的一篇文章——https://www.cnblogs.com/chenbenbuyi/p/10741195.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章