Hibernate中的一級緩存和二級緩存

 

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)方法指明使用二級緩存

相關文章
相關標籤/搜索