hibernate的緩存機制,一級緩存和二級緩存

爲了提高系統性能,hibernate也使用了緩存機制。在hibernate框架中,主要包含兩個方面的緩存,一級緩存和二級緩存。hibernate緩存的作用主要表現在以下兩個方面: 1) 通過主鍵(ID)加載數據的時候 .2) 延遲加載中。


 一級緩存:hibernate的一級緩存是由session提供的,因此它只存在session的生命週期中。也就是說session關閉的時候該session所管理的一級緩存也隨之被清除。hibernate的一級緩存是session所內置的,默認開啓,不能被卸載,也不能進行任何配置。在緩存中的對象,具有持久性,session對象負責管理.一級緩存的優點是使用同一個session對象多次查詢同一個數據對象,僅對數據庫查詢一次。一級緩存採用的是Key-Value的MAP方式來實現的。在緩存實體對象時,對象的主關鍵字ID是MAP的Key,實體對象就是對象的值。所以說一級緩存是以實體對象爲單位進行存儲的。訪問的時候使用的是主鍵關鍵字ID。一級緩存使用的是自動維護的功能。但可以通過session提供的手動方法對一級緩存的管理進行手動干預。evict()方法用於將某個對象從session的一級緩存中清除。clear()方法用於將session緩存中的方法全部清除。

  二級緩存:二級緩存的實現原理與一級緩存是一樣的。也是通過Key-Value的Map來實現對對象的緩存。二級緩存是作用在SessionFactory範圍內的。因此它它可被所有的Session對象所共享。需要注意的是放入緩存中的數據不能有第三方的應用對數據進行修改。

  二級緩存默認關閉,需要程序員手動開啓。首先導入ehcache.jar二級緩存包。然後,在src下添加ehcache.xml配置,同時,在hibernate.cfg.xml中啓用二級緩存<property name="hibernate.cache.use_second_level_cache"> true</property><property name="hibernate.cache.provider_class"> net.sf.ehcache.hibernate.EhCacheProvider</property>。第三:指定使用二級緩存緩存哪種類型的對象,在hbm.xml中添加<cache region="sampleCache1" usage="read-only"/>


具體根據你的業務需求去配置。 


發佈了28 篇原創文章 · 獲贊 41 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章