一、JavaWeb中的持久化和算法中的持久化
數(shù)據(jù)的“持久化”(Persistence) 和算法里面的“可持久化”(Persistent) 是不同的概念。前者你可以認(rèn)為是保存,大概的感覺是你看內(nèi)存里面的東西掉個電就沒了一點也不持久。硬盤里的東西看起來就持久多了。后者的概念是把每一個歷史時刻都記錄下來供操作使用。
什么是持久化
孫衛(wèi)琴的《精通Hibernate:Java對象持久化技術(shù)詳解》中有如下的解釋,感覺還是比較完整的。摘抄如下:
狹義的理解: “持久化”僅僅指把域?qū)ο笥谰帽4娴綌?shù)據(jù)庫中廣義的理解,“持久化”包括和數(shù)據(jù)庫相關(guān)的各種操作。保存:把域?qū)ο笥谰帽4娴綌?shù)據(jù)庫。更新:更新數(shù)據(jù)庫中域?qū)ο蟮臓顟B(tài)。刪除:從數(shù)據(jù)庫中刪除一個域?qū)ο蟆<虞d:根據(jù)特定的OID,把一個域?qū)ο髲臄?shù)據(jù)庫加載到內(nèi)存。查詢:根據(jù)特定的查詢條件,把符合查詢條件的一個或多個域?qū)ο髲臄?shù)據(jù)庫加載內(nèi)在存中。為什么要持久化
持久化技術(shù)封裝了數(shù)據(jù)訪問細(xì)節(jié),為大部分業(yè)務(wù)邏輯提供面向?qū)ο蟮腁PI。
通過持久化技術(shù)可以減少訪問數(shù)據(jù)庫數(shù)據(jù)次數(shù),增加應(yīng)用程序執(zhí)行速度;代碼重用性高,能夠完成大部分?jǐn)?shù)據(jù)庫操作;松散耦合,使持久化不依賴于底層數(shù)據(jù)庫和上層業(yè)務(wù)邏輯實現(xiàn),更換數(shù)據(jù)庫時只需修改配置文件而不用修改代碼。延伸閱讀:
二、java持久化技術(shù)
java持久化技術(shù)是為了將java對象與數(shù)據(jù)庫表對應(yīng)。java中存儲很多對象在內(nèi)存是很浪費空間的,內(nèi)存過于昂貴,與硬盤、磁帶、光盤等外存相比,內(nèi)存的價格要高2~3個數(shù)量級,而且維持成本也高,至少需要一直供電吧。所以即使對象不需要永久保存,也會因為內(nèi)存的容量限制不能一直呆在內(nèi)存中,需要持久化來緩存到外存。
持久化是將程序數(shù)據(jù)在持久狀態(tài)和瞬時狀態(tài)間轉(zhuǎn)換的機制。通俗的講,就是瞬時數(shù)據(jù)(比如內(nèi)存中的數(shù)據(jù),是不能永久保存的)持久化為持久數(shù)據(jù)(比如持久化至數(shù)據(jù)庫中,能夠長久保存)。