中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hibernate緩存是什么

發布時間:2022-09-29 16:46:57 來源:億速云 閱讀:137 作者:iii 欄目:開發技術

這篇“Hibernate緩存是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Hibernate緩存是什么”文章吧。

緩存是一種提高系統性能的機制。它是位于應用程序和數據庫之間的緩沖存儲器。高速緩存存儲最近使用的數據項,以盡可能減少數據庫命中的次數。

緩存對 Hibernate 也很重要。它使用多級緩存方案,如下所述

Hibernate緩存是什么

一級緩存

一級緩存是Session緩存,是所有請求都必須通過的強制緩存。Session 對象在將對象提交到數據庫之前將其保持在自己的權力之下。

如果您對一個對象發出多個更新,Hibernate 會嘗試盡可能長時間地延遲執行更新,以減少發出的更新 SQL 語句的數量。如果您關閉會話,所有正在緩存的對象都將丟失,并在數據庫中保留或更新。

二級緩存

二級緩存是可選的緩存,在嘗試定位二級緩存中的對象之前,將始終參考一級緩存。二級緩存可以基于每個類和每個集合進行配置,主要負責跨會話緩存對象。

任何第三方緩存都可以與 Hibernate 一起使用。提供了一個org.hibernate.cache.CacheProvider接口,必須實現該接口才能為 Hibernate 提供緩存實現的句柄。

查詢級緩存

Hibernate 還實現了與二級緩存緊密集成的查詢結果集緩存。

這是一個可選功能,需要兩個額外的物理緩存區域來保存緩存的查詢結果和上次更新表時的時間戳。這僅對使用相同參數頻繁運行的查詢有用。

二級緩存

Hibernate默認使用一級緩存,你不用做一級緩存。讓我們直接進入可選的二級緩存。并非所有類都能從緩存中受益,因此能夠禁用二級緩存很重要。

Hibernate 二級緩存分兩步設置。首先,您必須決定使用哪種并發策略。之后,您可以使用緩存提供程序配置緩存過期和物理緩存屬性。

并發策略

并發策略是一個中介,它負責將數據項存儲在緩存中并從緩存中檢索它們。如果要啟用二級緩存,則必須為每個持久類和集合決定使用哪種緩存并發策略。

Transactional - 將此策略用于以讀取為主的數據,在這種情況下,在極少數更新的情況下,防止并發事務中的陳舊數據至關重要。

Read-write - 再次將此策略用于以讀取為主的數據,在這種情況下,在極少數更新的情況下,防止并發事務中的陳舊數據至關重要。

Nonstrict-read-write - 此策略無法保證緩存和數據庫之間的一致性。如果數據幾乎從未更改并且過時數據的可能性很小不是關鍵問題,則使用此策略。

只讀- 適用于數據的并發策略,永遠不會改變。僅將其用作參考數據。

如果我們要為Employee類使用二級緩存,讓我們添加所需的映射元素,告訴 Hibernate 使用讀寫策略緩存 Employee 實例。

<?xml version = "1.0" encoding = "utf-8"?><!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
   <class name = "Employee" table = "EMPLOYEE">      
      <meta attribute = "class-description">
         This class contains the employee detail. 
      </meta>      
      <cache usage = "read-write"/>      
      <id name = "id" type = "int" column = "id">
         <generator class="native"/>
      </id>      
      <property name = "firstName" column = "first_name" type = "string"/>
      <property name = "lastName" column = "last_name" type = "string"/>
      <property name = "salary" column = "salary" type = "int"/>      
   </class></hibernate-mapping>

usage="read-write" 屬性告訴 Hibernate 對定義的緩存使用讀寫并發策略。

查詢級緩存

要使用查詢緩存,您必須首先使用配置文件中的hibernate.cache.use_query_cache="true"屬性激活它。通過將此屬性設置為 true,您可以讓 Hibernate 在內存中創建必要的緩存來保存查詢和標識符集。

接下來,要使用查詢緩存,請使用 Query 類的 setCacheable(Boolean) 方法。例如

Session session = SessionFactory.openSession();
Query query = session.createQuery("FROM EMPLOYEE");
query.setCacheable(true);List users = query.list();
SessionFactory.closeSession();

Hibernate 還通過緩存區域的概念支持非常細粒度的緩存支持。緩存區域是指定名稱的緩存的一部分。

Session session = SessionFactory.openSession();
Query query = session.createQuery("FROM EMPLOYEE");
query.setCacheable(true);
query.setCacheRegion("employee");List users = query.list();
SessionFactory.closeSession();

此代碼使用該方法告訴在Hibernate緩存的員工區域中存儲和查找查詢。

以上就是關于“Hibernate緩存是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩施市| 灯塔市| 泰宁县| 白城市| 台中市| 阳东县| 金阳县| 信阳市| 临武县| 永城市| 沾化县| 孝昌县| 临高县| 太仆寺旗| 康马县| 永修县| 吴旗县| 吉木萨尔县| 三亚市| 神木县| 黑水县| 大姚县| 防城港市| 北海市| 万山特区| 乐山市| 临朐县| 焦作市| 星座| 岳池县| 肥西县| 正宁县| 鲁山县| 通辽市| 鸡泽县| 资讯| 青河县| 济阳县| 噶尔县| 阿拉善盟| 信阳市|