一級快取:
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級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...