:
並不是指計算機的記憶體或者cpu的一二級快取;快取是指為了降低應用程式對物理資料來源訪問的頻次從而提高應用程式的執行效能的一種策略。
1.orm框架訪問資料庫的效率直接影響應用程式的執行速度,提公升和優化orm框架的執行效率至關重要。
2.hibernate的快取是提公升和優化hibernate執行效率的重要手段,所以學會hibernate快取的使用和配置是優化的關鍵。
3.評判乙個orm框架是否優秀,訪問資料庫的頻次就乙個重要的標準。
1.hibernate一級快取又稱為"session快取","會話級快取"
2.通過session從資料庫查詢實體時把實體在記憶體中儲存起來,下一次查詢同一實體時不再從資料庫獲取,而是從記憶體中獲取,這就是快取
3.一級快取的生命週期和session相同;session銷毀,他也銷毀
4.一級快取中的資料可適用範圍在當前會話之內
一級快取是hibernate的預設快取,無法取消,用兩個方法管理:
1、evict():用於將某個物件從session的一級快取中清除。
2、clear():用於將一級快取中的所有物件全部清除。
1.list每次都是通過一條語句直接運算元據庫取出所有的資料返回(並且將物件存入hibernate快取),在乙個session中使用兩次list()方法,都會傳送查詢語句,證明list()方法不使用快取;
2.iterator首先通過一條語句取出所有資料的id,然後通過id在hibernate的一級快取中查詢是否存在該物件,如果存在則直接取出,如果沒有則再次發出一條sql語句通過id取得物件(並且加入到快取中),這樣如果所有的id在快取中都沒有的話就會出現n+1條sql語句的問題。
3.所以兩者需要合理的結合使用,最大提高效能。
4.使用list()後,資料在一級快取中存在,再同乙個session中使用iterator()的話,不會傳送資料庫語句,證明iterator()使用一級快取,在乙個session中使用兩次list()方法,都會傳送查詢語句,證明list()方法不使用快取
1.二級快取又稱為「全域性快取」、「應用級快取」;
2.二級快取中的資料可使用範圍是當前應用的所有會話;
3.二級快取是可插拔式快取,預設是ehcache,還支援其他二級快取元件如:hashtable、oscache、swarmcache等。
1.每個session共用的快取
2.二級快取不是預設開啟的,需要手動配置
a.匯入jar包
b.加入ehcache.xml配置檔案
maxelementsinmemory="10000" 表示快取中允許建立的最大物件數。
eternal="false" 表示快取中物件是否為永久的。
timetoidleseconds="120" 表示快取資料鈍化時間(即物件在它過期前的空閒時間)。
timetoliveseconds="120" 表示快取資料生存時間(即物件在它過期前的生存時間)。
overflowtodisk="true" 表示溢位之後是否儲存在硬碟上。
c.hibernate.cfg.xml中配置指定二級快取的外部實現類
d.xx.hbm.xml配置檔案中配置指定使用二級快取
唯讀(region="employee(自定義命名)":在ehcache.xml檔案中自定義配置)
1.很少被修改的資料;
2.不是很重要的資料,允許偶爾出現併發的資料;
3.不會被併發訪問的資料;
4.參考資料
1.hibernate的快取能提高檢索效率;
2.hibernate的快取分為一級快取和二級快取,一級快取是會話級快取,二級快取是應用級快取;
3.hibernate的快取在提高檢索的同時,也會增加伺服器的消耗,所以注意快取的使用策略。
Hibernate快取技術
hibernate的一級快取 session的快取和sessionfactory的內建快取,不可解除安裝。hibernate的二級快取 sessionfactory的外接快取,可插拔。session的快取 session快取中存放的是資料庫中資料的拷貝,在db中表現為關係資料形式,而在session...
Hibernate中的快取技術
根據我學習的框架的經驗,在shh整合框架中,hibernate是最難學習的了。hibernate中有許多要點,還得掌握一下啊,像懶載入lazy 級聯cascade 事物控制 還有快取和二級快取哦。首先我們先來了解一下快取 所謂快取就是介於應用程式和物理資料來源之間的資料。能夠降低應用程式對物理資料訪...
Hibernate的快取技術詳解
並不是指計算機的記憶體或者cpu的一二級快取 快取是指為了降低應用程式對物理資料來源訪問的頻次從而提高應用程式的執行效能的一種策略。1.orm框架訪問資料庫的效率直接影響應用程式的執行速度,提公升和優化orm框架的執行效率至關重要。2.hibernate的快取是提公升和優化hibernate執行效率...