11-Hibernate之二級緩存(一)

什麼是Hibernate的二級緩存

緩存(Cache): 計算機領域非常通用的概念。它介於應用程序和永久性數據存儲源(如硬盤上的文件或者數據庫)之間,其作用是降低應用程序直接讀寫永久性數據存儲源的頻率,從而提高應用的運行性能。緩存中的數據是數據存儲源中數據的拷貝。緩存的物理介質通常是內存

Hibernate中提供了兩個級別的緩存

  • 一級緩存:是 Session 級別的緩存,它是屬於事務範圍的緩存。這一級別的緩存由 hibernate 管理的。
  • 二級緩存:是 SessionFactory 級別的緩存,它屬於進程範圍的緩存。
  • 在使用時,二級緩存是可有可無的,但一級緩存是必不可少的。

一級緩存的使用場合:
  當使用Session查詢數據時,首先會在Session內部查找該對象是否存在,若存在,則直接返回,否則,就到數據庫中查詢,並將查詢到的結果緩存起來以便後期使用。一級緩存的缺點就是當使用Session來表示一次會話時,它的生命週期較短,而且它不是線程安全的,不能被多個線程共享,因此,在實際使用時,對效率的提升不是非常明顯。

  鑑於以上原因,引入二級緩存的概念。二級緩存用來爲Hibernate配置一種全局的緩存,以便實現多個線程與事務共享。在使用了二級緩存機制後,當查詢數據時,會首先在內存緩存中查找,如果不存在,接着在二級緩存中查找,最後纔去數據庫中查找。與一級緩存相比,二級緩存是獨立於Hibernate的軟件部件的,屬於第三方的產品,常見的產品有EhCache、OSCache、JbossCache等。Hibernate3默認使用的產品是EhCache。在使用時,可以根據需求通過配置緩存插件實現二級緩存功能,Hibernate爲了集成這些插件,提供了org.hibernate.cache.CacheProvider接口來充當緩存插件與Hibernate之間的適配器。當然,二級緩存除了以內存作爲存儲介質外,還可以選用硬盤等外部存儲設備。

二級緩存適合的幾種情況:

  • 數據量較小(數據量太大會消耗大量內存,造成內存資源緊張,降低系統性能)。
  • 對數據的修改較少(會造成頻繁對緩存中的數據進行同步,影響系統的性能)。
  • 不會被大量的應用共享的數據(數據被大量線程或事務共享,多線程訪問的同步機制會影響系統性能)。
  • 不是很重要的數據(如果要查詢的數據對正確性要求較高,如財務,最好不要使用二級緩存)。

參考自:參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章