一般而言,orm的資料快取應包含如下幾個層次:
1. 事務級快取(transcation layer cache)
3. 分布式快取(cluster layer cache)
hibernate資料快取(cache)分為兩個層次,以hibernate語義加以區分,可分為:
1. 內部快取(session level,也稱為一級快取)
2. 二級快取(sessionfactory level,也稱為二級快取)
hibernate中,快取將在以下情況中發揮作用:
1. 通過id[主鍵]載入資料時
2. 延遲載入
內部快取正常情況下由hibernate自動維護,如果需要手動干預,可以通過以下方法完成:
1. session.evict
將某個特定物件從內部快取清除。
2. session.clear
清空內部快取。
在hibernate中,二級快取涵蓋了應用級快取和分布式快取領域。如果資料滿足以下條件,則可將其納入快取管理。
1. 資料不會被第三方應用修改;
2. 資料大小(data size)在可接收的範圍之內;
3. 資料更新頻率較低;
4. 同一資料可能會被系統頻繁引用;
5. 非關鍵資料(關鍵資料,如金融帳戶資料)。
hibernate本身並未提供二級快取的產品化實現,而是為眾多的第三方快取元件提供了接入介面,較常用的第三方元件有:
1. jcs
2. ehcache
3. oscache
4. jbosscache
5. swarmcache
hibernate中啟用二級快取,需要在hibernate.cfg.xml配置hibernate.cache.provider_class引數,之後,需要在對映檔案中指定各個對映實體(以及collection)的快取同步策略。hibernate提供了一下4種內建的快取同步策略:
1. read-only
唯讀。對於不會發生改變的資料,可使用唯讀型快取。
2. nonstrict-read-write
如果程式對併發訪問下的資料同步要求不是非常嚴格,且資料更新操作頻率較低,可以採用本選項,獲得較好的效能。
3. read-write
嚴格可讀寫快取。基於時間戳判定機制,實現了「read committed」事務隔離等級。可用於對資料同步要求嚴格的情況,但不支援分布式快取。這也是實際應用中使用最多的同步策略。
4. transactional
事務型快取,必須執行在jta事務環境中。
Hibernate的快取機制介紹
快取是介於應用程式和物理資料來源之間,其作用是為了降低應用程式對物理資料來源訪問的頻次,從而提高了應用的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。快取的介質一般是記憶體,所以讀寫速度很快。但如果快取中存放的...
Hibernate的快取機制介紹
快取是介於應用程式和物理資料來源之間,其作用是為了降低應用程式對物理資料來源訪問的頻次,從而提高了應用的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。快取的介質一般是記憶體,所以讀寫速度很快。但如果快取中存放的...
hibernate快取,mybatis快取詳解
hibernate的快取有一級快取,二級快取,查詢快取。一級快取 很簡單,session級別的快取,通過get,update可以將物件放到一級快取中。二級快取 sessionfactory級別的快取,通過get,list可以將物件放到二級快取中,這裡我必須細講一下,list雖然能夠把物件放入二級快取...