程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java 的持久化和序列化的簡單理解,java序列化

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

編輯:JAVA綜合教程

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


1.對象的持久化(Persistence)

   對象持久化就是讓對象的生存期超越使用對象的程序的運行期。將對象存儲在可持久保存的存儲介質上,在實際應用中,運用相應的對象持久化框架,將業務數據以對象的方式保存在數據庫中,如比較早的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) 把流反序列化成對象   這種傳輸可以是線程之間、進程之間、內存外存之間、主機之間的,凡是可以持久化的對象都可以序列化。   總的來說,對象持久化和對象序列化是兩個完全不同的應用場景,盡管你也可以說將一個對象序列化後存儲在數據庫中,但是你也不能說是對象持久化。

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved