hibernate二級緩存

                                                                                 Hibernate二級緩存又稱爲“SessionFactory的緩存”

1.Hibernate二級緩存介紹

        由於SessionFactory對象的生命週期和應用程序的整個過程對應,因此Hibernate二級緩存是進程範圍或者集羣範圍的緩存,

        有可能出現併發問題,因此需要採用適當的併發訪問策略,該策略爲被緩存的數據提供了事務隔離級別。

        第二級緩存是可選的,是一個可配置的插件,默認下SessionFactory不會啓用這個插件。

        Hibernate提供了org.hibernate.cache.CacheProvider接口,它充當緩存插件與Hibernate之間的適配器。

        Hibernate二級緩存在於sessionFactory sessionFactory 關閉,二級緩存消失(二級緩存默認開啓)。

2.Hibernate二級緩存原理

        Hibernate的二級緩存的實現原理與一級緩存是一樣的,也是通過以IDkeyMap來實現對對象的緩存。

3.什麼樣的數據適合存放到第二級緩存中?

1) 很少被修改的數據   
2) 不是很重要的數據,允許出現偶爾併發的數據   
3) 不會被併發訪問的數據   
4) 常量數據

4.什麼樣的數據不適合存放到第二級緩存中?

       1) 經常被修改的數據   
        2) 絕對不允許出現併發訪問的數據,如財務數據,絕對不允許出現併發   
        3) 與其他應用共享的數據 


5.二級緩存管理

         evict(Class arg0, Serializable arg1)將某個類的指定ID的持久化對象從二級緩存中清除,釋放對象所佔用的資源

         sessionFactory.evict(Customer.class, new Integer(1));

         evict(Class arg0)  將指定類的所有持久化對象從二級緩存中清除,釋放其佔用的內存資源。

         sessionFactory.evict(Customer.class);

         evictCollection(String arg0)  將指定類的所有持久化對象的指定集合從二級緩存中清除,釋放其佔用的內存資源。

         sessionFactory.evictCollection("Customer.orders");

6.二級緩存的配置,常用的二級緩存插件:

           EHCache  org.hibernate.cache.EhCacheProvider

           OSCache  org.hibernate.cache.OSCacheProvider

           SwarmCahe  org.hibernate.cache.SwarmCacheProvider

           JBossCache  org.hibernate.cache.TreeCacheProvider

7.二級緩存簡單操作實現

 (1)創建Java項目,整個項目如圖:

 

(2)配置book.hbm.xml與Book(同hibernate一級緩存一樣)

(3)二級緩存是通過<cache>元素來進行配置的,所以在book.hbm.xml裏面配置加入

       <cache  usage="read-only" />

(4)Hibernate2.cfg.xml裏面需要添加配置

<property name="cache.use_second_level_cache">true</property>  <!--true默認開啓 --!>

<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

<property name="hibernate.cache.use_query_cache">true</property>

(5)增加EHCache配置參數

   

(6)測試類Demo2

(7)效果展示   微笑    (cache配置後區別,二級緩存開啓時只查詢一條SQL)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       

 

           

 

      

 

 

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