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) 把對象序列化到流中