hibernate一二級快取簡單介紹
Hibernate快取的作用:
Hibernate是一個持久層框架,經常訪問物理資料庫,為了降低應用程式對物理資料來源訪問的頻次,從而提高應用程式的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料
Hibernate快取分類:
Hibernate快取包括兩大類:Hibernate一級快取和Hibernate二級快取。
Hibernate一級快取又稱為“Session的快取”,它是內建的,不能被解除安裝(不能被解除安裝的意思就是這種快取不具有可選性,必須有的功能,不可以取消session快取)。由於Session物件的生命週期通常對應一個資料庫事務或者一個應用事務,因此它的快取是事務範圍的快取。第一級快取是必需的,不允許而且事實上也無法卸除。在第一級快取中,持久化類的每個例項都具有唯一的OID。
Hibernate二級快取又稱為“SessionFactory的快取”,由於SessionFactory物件的生命週期和應用程式的整個過程對應,因此Hibernate二級快取是程式範圍或者叢集範圍的快取,有可能出現併發問題,因此需要採用適當的併發訪問策略,該策略為被快取的資料提供了事務隔離級別。第二級快取是可選的,是一個可配置的外掛,在預設情況下,SessionFactory不會啟用這個外掛。
什麼樣的資料適合存放到第二級快取中?
1 很少被修改的資料
2 不是很重要的資料,允許出現偶爾併發的資料
3 不會被併發訪問的資料
4 常量資料
不適合存放到第二級快取的資料?
1 經常被修改的資料
2 絕對不允許出現併發訪問的資料,如財務資料,絕對不允許出現併發
3 與其他應用共享的資料。
搜尋
Hibernate查詢物件如何應用快取?
當Hibernate根據ID訪問資料物件的時候,首先從Session一級快取中查;查不到,如果配置了二級快取,那麼從二級快取中查;如果都查不到,再查詢資料庫,把結果按照ID放入到快取刪除、更新、增加資料的時候,
同時更新快取
Hibernate管理快取例項
無論何時,我們在管理Hibernate快取(Managing the caches)時,當你給save()、update()或saveOrUpdate()方法傳遞一個物件時,或使用load()、 get()、list()、iterate() 或scroll()方法獲得一個物件時, 該物件都將被加入到Session的內部快取中。 當隨後flush()方法被呼叫時,物件的狀態會和資料庫取得同步。 如果你不希望此同步操作發生,或者你正處理大量物件、需要對有效管理記憶體時,你可以呼叫evict() 方法,從一級快取中去掉這些物件及其集合。
Hibernate是一個持久層框架,經常訪問物理資料庫,為了降低應用程式對物理資料來源訪問的頻次,從而提高應用程式的執行效能。快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料
Hibernate快取分類:
Hibernate快取包括兩大類:Hibernate一級快取和Hibernate二級快取。
Hibernate一級快取又稱為“Session的快取”,它是內建的,不能被解除安裝(不能被解除安裝的意思就是這種快取不具有可選性,必須有的功能,不可以取消session快取)。由於Session物件的生命週期通常對應一個資料庫事務或者一個應用事務,因此它的快取是事務範圍的快取。第一級快取是必需的,不允許而且事實上也無法卸除。在第一級快取中,持久化類的每個例項都具有唯一的OID。
Hibernate二級快取又稱為“SessionFactory的快取”,由於SessionFactory物件的生命週期和應用程式的整個過程對應,因此Hibernate二級快取是程式範圍或者叢集範圍的快取,有可能出現併發問題,因此需要採用適當的併發訪問策略,該策略為被快取的資料提供了事務隔離級別。第二級快取是可選的,是一個可配置的外掛,在預設情況下,SessionFactory不會啟用這個外掛。
什麼樣的資料適合存放到第二級快取中?
1 很少被修改的資料
2 不是很重要的資料,允許出現偶爾併發的資料
3 不會被併發訪問的資料
4 常量資料
不適合存放到第二級快取的資料?
1 經常被修改的資料
2 絕對不允許出現併發訪問的資料,如財務資料,絕對不允許出現併發
3 與其他應用共享的資料。
搜尋
Hibernate查詢物件如何應用快取?
當Hibernate根據ID訪問資料物件的時候,首先從Session一級快取中查;查不到,如果配置了二級快取,那麼從二級快取中查;如果都查不到,再查詢資料庫,把結果按照ID放入到快取刪除、更新、增加資料的時候,
同時更新快取
Hibernate管理快取例項
無論何時,我們在管理Hibernate快取(Managing the caches)時,當你給save()、update()或saveOrUpdate()方法傳遞一個物件時,或使用load()、 get()、list()、iterate() 或scroll()方法獲得一個物件時, 該物件都將被加入到Session的內部快取中。 當隨後flush()方法被呼叫時,物件的狀態會和資料庫取得同步。 如果你不希望此同步操作發生,或者你正處理大量物件、需要對有效管理記憶體時,你可以呼叫evict() 方法,從一級快取中去掉這些物件及其集合。
相關文章
- Caffeine快取的簡單介紹快取
- MyBatis中的一級快取和二級快取介紹MyBatis快取
- 【MyBatis原始碼解析】MyBatis一二級快取MyBatis原始碼快取
- Hibernate 的一級快取快取
- Hibernate的一級快取快取
- Hibernate的一級快取Session和二級快取SessionFactory快取Session
- redis快取介紹Redis快取
- Hibernate中一級快取和二級快取使用詳解快取
- hibernate二級快取問題!快取
- javascript取模運算簡單介紹JavaScript
- phpob快取原理介紹PHP快取
- Android 的二級快取如斯簡單Android快取
- Hibernate一級快取(session)與二級快取(sessionFactory)的知識點。快取Session
- 原生javascript獲取dom元素簡單介紹JavaScript
- 快取、快取演算法和快取框架簡介快取演算法框架
- hibernate的查詢快取和二級快取的配合使用快取
- 快取融合(Cache Fusion)介紹快取
- 分散式快取 - 快取簡介,常用快取演算法分散式快取演算法
- Hibernate---快取機制四(一,二級快取的比較)快取
- jquery獲取json資料簡單介紹jQueryJSON
- js獲取地理位置資訊簡單介紹JS
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS
- UICollectionView 簡單介紹UIView
- css簡單介紹CSS
- 關於瀏覽器快取問題304響應狀態簡單介紹瀏覽器快取
- hibernate中lazy與二級快取問題快取
- 【hibernate】Session快取Session快取
- javascript建立、讀取或者刪除cookie簡單介紹JavaScriptCookie
- js獲取元素的樣式值簡單介紹JS
- hibernate(九) 二級快取和事務級別詳講快取
- Hibernate中二級快取(sessionFactory)的配置及其使用。快取Session
- RPC簡單介紹RPC