java 的持久化和序列化的簡單理解,java序列化

來源:互聯網
上載者:User

java 的持久化和序列化的簡單理解,java序列化

1.對象的持久化(Persistence)

   對象持久化就是讓對象的生存期超越使用對象的程式的運行期。將Object Storage Service在可持久儲存的儲存介質上,在實際應用中,運用相應的對象持久化架構,將業務資料以對象的方式儲存在資料庫中,如比較早的Hibernate。在一定周期內保持不變就是持久化,持久化是針對時間來說的。資料庫中的資料就是持久化了的資料,只要你不去刪除或修改。比如在IE瀏覽器中一次Session會話中Session物件變數也是不變的,是Session容器中持久化。對象持久化的方式有很多種,根據周期不同有,page,Session,Application。

   通俗點理解就是,把對象當做一快鮮肉,不做持久化處理,這塊肉很快就是變質不能用了,做持久化處理,就會把鮮肉放到冷庫中儲存,這樣可以儲存相當長的時間。

  持久化是一種物件服務,就是把記憶體中的對象儲存到外存中,讓以後能夠取回。需要實現至少3個介面:

  void Save(object o) 把一個對象儲存到外存中

  Object Load(object oid) 通過對象標識從外存中取回對象

  boolExists(object oid) 檢查外存中是否存在某個對象

  為什麼需要持久化服務呢?那是由於記憶體本身的缺陷引起的:

  記憶體掉電後資料會丟失,但有一些對象是無論如何都不能丟失的,比如銀行帳號,遺憾的是,人們還無法保證記憶體永不掉電。記憶體過於昂貴,與硬碟、磁帶、光碟片等外存相比,記憶體的價格要高2~3個數量級,而且維持成本也高,至少需要一直供電吧。所以即使對象不需要永久儲存,也會因為記憶體的容量限制不能一直呆在記憶體中,需要持久化來緩衝到外存。

2.對象的序列化(Serialization)

  JVM 向我們屏蔽了記憶體操作相關的資訊,我們並不知道資料是以什麼樣的形式來儲存和組織的,當對象需要進行傳輸時,java提供了序列化的方法方便我們對資料進行傳輸操作。對象序列化後的資料格式可以是二進位,可以是XML,也可以是JSON等任何格式,還原序列化則是相反的操作。序列化是為瞭解決對象的傳輸問題,當傳輸一個對象時,則需要實現2個介面:

  void Serialize(Stream stream,object o) 把對象序列化到流中

  object Deserialize(Stream stream) 把流還原序列化成對象  這種傳輸可以是線程之間、進程之間、記憶體外存之間、主機之間的,凡是可以持久化的對象都可以序列化。  總的來說,對象持久化和對象序列化是兩個完全不同的應用情境,儘管你也可以說將一個對象序列化後儲存在資料庫中,但是你也不能說是對象持久化。

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.