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

1.對象的持久化(Persistence)java

   對象持久化就是讓對象的生存期超越使用對象的程序的運行期。將對象存儲在可持久保存的存儲介質上,在實際應用中,運用相應的對象持久化框架,將業務數據以對象的方式保存在數據庫中,如比較早的Hibernate。在必定週期內保持不變就是持久化,持久化是針對時間來講的。數據庫中的數據就是持久化了的數據,只要你不去刪除或修改。好比在IE瀏覽器中一次Session會話中Session對象變量也是不變的,是Session容器中持久化。對象持久化的方式有不少種,根據週期不一樣有,page,Session,Application。數據庫

   通俗點理解就是,把對象當作一快鮮肉,不作持久化處理,這塊肉很快就是變質不能用了,作持久化處理,就會把鮮肉放到冷庫中保存,這樣能夠保存至關長的時間。瀏覽器

  持久化是一種對象服務,就是把內存中的對象保存到外存中,讓之後可以取回。須要實現至少3個接口:緩存

  void Save(object o) 把一個對象保存到外存中框架

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

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

  爲何須要持久化服務呢?那是因爲內存自己的缺陷引發的:對象

  內存掉電後數據會丟失,但有一些對象是不管如何都不能丟失的,好比銀行帳號,遺憾的是,人們還沒法保證內存永不掉電。內存過於昂貴,與硬盤、磁帶、光盤等外存相比,內存的價格要高2~3個數量級,並且維持成本也高,至少須要一直供電吧。因此即便對象不須要永久保存,也會由於內存的容量限制不能一直呆在內存中,須要持久化來緩存到外存。接口

2.對象的序列化(Serialization)進程

  JVM 向咱們屏蔽了內存操做相關的信息,咱們並不知道數據是以什麼樣的形式來存儲和組織的,當對象須要進行傳輸時,java提供了序列化的方法方便咱們對數據進行傳輸操做。對象序列化後的數據格式能夠是二進制,能夠是XML,也能夠是JSON等任何格式,反序列化則是相反的操做。序列化是爲了解決對象的傳輸問題,當傳輸一個對象時,則須要實現2個接口:

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

  object Deserialize(Stream stream) 把流反序列化成對象
  這種傳輸能夠是線程之間、進程之間、內存外存之間、主機之間的,凡是能夠持久化的對象均可以序列化。
  總的來講,對象持久化和對象序列化是兩個徹底不一樣的應用場景,儘管你也能夠說將一個對象序列化後存儲在數據庫中,可是你也不能說是對象持久化。
相關文章
相關標籤/搜索