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) 把流反序列化成對象 這種傳輸可以是線程之間、進程之間、內存外存之間、主機之間的,但凡可以耐久化的對象都可以序列化。 總的來說,對象耐久化和對象序列化是兩個完全不同的使用場景,雖然你也可以說將一個對象序列化後存儲在數據庫中,但是你也不能說是對象耐久化。