Hibernate 二級快取和查詢快取

2021-08-31 13:35:33 字數 1911 閱讀 9193

一級快取:

1,在session上面有乙個一級快取;一級快取的生命週期和session相同,一級快取最大生命週期就是乙個執行緒;在web環境下面,session的最大生命週期就是一次請求;

2,一級快取可以用來幹嘛?

1,只能有限的提高一點點系統效能;

2,最重要的功能:提供給了乙個臨時存放持久化物件的空間;

在更多的情況下,我們要提高的效能的資料往往是不同請求,請求的相同資料;

二級快取概念:

1,生命週期為整個應用的快取(二級快取是sessionfactory上的快取,能提供整個應用中所有的session使用,可以在不同的請求之間共享快取的資料)

2,所有的get,load方法,總是先查一級快取,再查二級快取,如果都沒有,再去資料庫裡面查詢。

附加:二級快取的原理;

二級快取其實就是個快取.什麼是快取?其實簡單理解就是乙個map;

4,二級快取有一些效能的指標

1、命中率(總的從二級快取中取得的數量/總的取的數量)

2、最大物件數量;

3、最大空閒時間;

4, 移除資料策略;fifo   filo   lru

5,二級快取實際上就是乙個快取,所以,hibernate並沒有實現自己的二級快取框架,而是用的開源的快取框架。

hibernate中二級快取的使用:

1,常見的開源的二級快取框架

2,ehcache作為hibernate二級快取

1,ehcache相關jar包;

2,拷貝ehcache.xml(ehcache的配置檔案);

3,告訴hibernate,我現在用的是哪乙個快取框架;

4,hibernate中配置好二級快取:

5,指定哪些實體物件需要二級快取:         1,在對映檔案中新增;

4,ehcache的配置:

1,maxelementsinmemory:該快取池放在記憶體中最大的快取物件個數;

2,eternal:是否永久有效,如果設定為true,記憶體中物件永不過期;

3,timetoidleseconds:快取物件最大空閒時間,單位:秒;

4,timetoliveseconds:快取物件最大生存時間,單位:秒;

5,overflowtodisk:當記憶體中物件超過最大值,是否臨時儲存到磁碟;

6,maxelementsondisk:能儲存到磁碟上最大物件數量;

7,diskexpirythreadintervalseconds:磁碟失效執行緒執行時間間隔,預設是120秒

8,memorystoreevictionpolicy:當達到maxelementsinmemory限制時,ehcache將會根據指定的策略去清理記憶體。

預設策略是lru(最近最少使用),可以設定為fifo(先進先出)或是lfu(較少使用)

說明:1,預設情況下,所有的物件都是快取在ehcache的defaultcache中;

2,一定注意,****ultcache,eternal不能設定為true

3,把乙個類放在指定的二級快取區域中(可以細粒度的管理二級快取的效能);

1,給乙個類新增region屬性(二級快取區塊的名稱)

hibernate二級快取

cacheconcurrencystrategy.none cacheconcurrencystrategy.read only 唯讀模式,在此模式下,如果對資料進行更新操作,會有異常 cacheconcurrencystrategy.read write 讀寫模式在更新快取的時候會把快取裡面的資料...

hibernate 二級快取

session快取 一級快取 sql查詢結果快取,由hibernate管理 sessionfactory內建快取,內建快取是hibernate自帶的,用於存放預定義的sql以及hbm.xml描述的元資料,不可解除安裝 sessionfactory外接快取 二級快取 由外部外掛程式提供,外接快取的資料...

Hibernate二級快取

hibernate的session在事務級別進行持久化資料的快取操作。當然,也有可能分別為每個類 或集合 配置集群 或jvm級別 sessionfactory級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...