查詢緩存是面對重複緩存的,是依賴于二級緩存的,是以一定要打開二級緩存。
1.load預設使用二級緩存,iterate預設使用二級緩存
2.list預設往二級緩存中加資料,但是查詢的時候不使用
3.如果要query用二級緩存,需打開查詢緩存
i.<property name="cache.use_query_cache">ture</property>
ii.調用query的setcacheable(true)方法指明使用二級緩存。
證明查詢緩存已經起作用了:
發現隻輸出了一條查詢語句,說明加第二次載了緩存:
hibernate:
select
category0_.id as id0_0_,
category0_.name as name0_0_
from
category category0_
where
category0_.id=?
c0
ps:說一下主流的緩存算法
緩存算法就是指定記憶體裡面哪個對象在适當的時候該拿走
a.lru、lfu、fifo
1.least recently used
翻譯是"最近很少使用",也就是最近很少使用的會被清除,每個在緩存中的對象都有存在的時間标志,哪一個時間長,就會被拿走。
2.least frequently used(命中率高低)
最近不常被使用,最少被使用。緩存中有兩個對象,一個被命中1回,一個被命中100回,那麼新來一個對象的時候,就會清除那個命中1回的那個。
3.first in first out
就是一個隊列,後面進一個,前面走一個。
在ehcache的配置檔案中可以配置這個屬性來設定緩存算法:
b.memorystoreevictionpolicy="lru"(ehcache)
轉載請注明出處:http://blog.csdn.net/acmman/article/details/44132287