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