Hibernate的一級緩存和二級緩存sql
1,什麼是緩存?緩存
2,什麼是一級緩存?session
一級緩存,就是session級別的緩存ide
同一個session裏,若是查詢的數據存在,則直接在內存中取出,不發出sql語句spa
3,什麼是二級緩存?hibernate
二級緩存,就是SessionFactory級別的緩存,能夠跨越session存在orm
打開二級緩存xml
1,在hibernate.cfg.xml中設定對象
<property name=」cache.use_second_level」>true</property>內存
<property name=」cache.provider_class」>org.hibernate.cache.EhCacheProvider</property>
配置ehcache.xml配置文件
DefaultCache
maxElementsInMemory 最大對象個數
Eternal 永遠生存 = true 能夠替換緩存對象
timeToIdleSeconds = 120 120秒後沒有使用,去掉
TimeToLiveSconds = 1200 1200生存時間後,去掉,生命值
OverflowToDisk=true 內存不夠用,放在硬盤上
二級緩存適合的對象
常常被訪問
改動不大,不會常常被改動
數量有限
(組織機構,權限,地區)
2,是用@cache註解,須要使用二級緩存的對象(org.hibernate.annotations)
@cache(usage=CacheConcurrencyStrategy.READ_ONLY) READ_WRITE(用的比較多)
4,load默認使用二級緩存,iterate 默認使用二級緩存
List默認往二級緩存加數據,可是查詢的時候不會使用二級緩存
5,若是要query用二級緩存,須要打開查詢緩存
查詢緩存起做用的話,必須這個查詢條件同樣
I,<property name=」cache.use_query_cache」>true</property>
ii.調用Query的setCacheable(true)方法指明使用二級緩存