什麼是緩存:我們在記憶體中開辟一塊空間,把本來應該存儲在硬碟上的東西,然後給它放在記憶體裡,将來要讀的時候從記憶體中讀,這個部分就叫做緩存。
在hibernate有三種緩存,一級緩存,二級緩存和查詢緩存。
一級緩存是session級别的緩存。
例子:
測試結果:
hibernate:
select
category0_.id as id0_0_,
category0_.name as name0_0_
from
category category0_
where
category0_.id=?
c0
取了兩次category_1,但是隻發出1條sql語句,第二次拿資料是從緩存中拿。
測試2:
發出兩條sql語句去取資料。
證明一個session是不能去拿另外一個session的緩存的。
假如利用多線程取資料,每次資料都從不同的session中取,這樣就導緻每一次查詢都會通路資料庫。如何解決?
解決方案:每個session都有各自的緩存,那麼我何不弄一個大的緩存,把所有的緩存資訊都存在這個大的緩存裡。到查詢資訊的時候,去大緩存中去查找,找不到了再去資料庫查找。這個緩存我們稱之為二級緩存。
二級緩存在下一個文檔裡:http://blog.csdn.net/acmman/article/details/44132207
轉載請注明出處:http://blog.csdn.net/acmman/article/details/44132153