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