Hibernate快取介紹

2021-06-09 07:38:34 字數 1274 閱讀 5746

一般而言,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雖然能夠把物件放入二級快取...