欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java關于MyBatis緩存詳解

 更新時間:2021年09月16日 10:26:48   作者:DrLai  
緩存的重要性是不言而喻的,使用緩存,我們可以避免頻繁的與數(shù)據(jù)庫進行交互,尤其是在查詢越多、緩存命中率越高的情況下,使用緩存對性能的提高更明顯。本文將給大家詳細的介紹,對大家的學習或工作具有一定的參考借鑒價值

什么是 MyBatis 緩存

使⽤緩存可以減少 Java 應⽤與數(shù)據(jù)庫的交互次數(shù),從而提升程序的運行效率。⽐如查詢出 id = 1 的對象,第⼀次查詢出之后會自動將該對象保存到緩存中,當下⼀次查詢時,直接從緩存中取出對象即可, 無需再次訪問數(shù)據(jù)庫。

MyBatis 緩存分類

1.⼀級緩存:SqlSession級別,默認開啟,并且不能關閉.(默認開啟)

操作數(shù)據(jù)庫時需要創(chuàng)建 SqlSession 對象,在對象中有⼀個 HashMap ⽤于存儲緩存數(shù)據(jù),不同的 SqlSession 之間緩存數(shù)據(jù)區(qū)域是互不影響的。 ⼀級緩存的作用域是 SqlSession 范圍的,當在同⼀個 SqlSession 中執(zhí)⾏兩次相同的 SQL 語句事,第⼀ 次執(zhí)行完畢會將結(jié)果保存到緩存中,第⼆次查詢時直接從緩存中獲取。 需要注意的是,如果 SqlSession 執(zhí)行了 DML 操作(insert、update、delete),MyBatis 必須將緩存清空以保證數(shù)據(jù)的準確性。

2.二級緩存:Mapper 級別,默認關閉,可以開啟

使⽤⼆級緩存時,多個 SqlSession 使⽤同⼀個 Mapper 的 SQL 語句操作數(shù)據(jù)庫,得到的數(shù)據(jù)會存在⼆ 級緩存區(qū),同樣是使⽤ HashMap 進⾏數(shù)據(jù)存儲,相⽐較于⼀級緩存,⼆級緩存的范圍更⼤,多個 SqlSession 可以共⽤⼆級緩存,⼆級緩存是跨 SqlSession 的。 ⼆級緩存是多個 SqlSession 共享的,其作⽤域是 Mapper 的同⼀個 namespace,不同的 SqlSession 兩次執(zhí)⾏相同的 namespace 下的 SQL 語句,參數(shù)也相等,則第⼀次執(zhí)⾏成功之后會將數(shù)據(jù)保存到⼆級 緩存中,第⼆次可直接從⼆級緩存中取出數(shù)據(jù)。

二級緩存如何使用

1.MyBatis 自帶的二級緩存

1.1config.xml 配置開啟⼆級緩存

settings>
 <!-- 打印SQL-->
 <setting name="logImpl" value="STDOUT_LOGGING" />
 <!-- 開啟延遲加載 -->
 <setting name="lazyLoadingEnabled" value="true"/>
 <!-- 開啟⼆級緩存 -->
 <setting name="cacheEnabled" value="true"/>
</settings>

1.2Mapper.xml 中配置⼆級緩存

<cache></cache>

1.3實體類實現(xiàn)序列化接口

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Account implements Serializable {
 private long id;
 private String username;
 private String password;
 private int age;
}

2.ehcache 二級緩存(第三方)

2.1pom.xml 添加相關依賴

<dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis-ehcache</artifactId>
 <version>1.0.0</version>
</dependency>
<dependency>
 <groupId>net.sf.ehcache</groupId>
 <artifactId>ehcache-core</artifactId>
 <version>2.4.3</version>
</dependency>

2.2添加 ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
 <diskStore/>
 <defaultCache
 maxElementsInMemory="1000"
 maxElementsOnDisk="10000000"
 eternal="false"
 overflowToDisk="false"
 timeToIdleSeconds="120"
 timeToLiveSeconds="120"
 diskExpiryThreadIntervalSeconds="120"
 memoryStoreEvictionPolicy="LRU">
 </defaultCache>
</ehcache>

2.3config.xml 配置開啟⼆級緩存

<settings>
 <!-- 打印SQL-->
 <setting name="logImpl" value="STDOUT_LOGGING" />
 <!-- 開啟延遲加載 -->
 <setting name="lazyLoadingEnabled" value="true"/>
 <!-- 開啟⼆級緩存 -->
 <setting name="cacheEnabled" value="true"/>
</settings>

2.4 Mapper.xml 中配置⼆級緩存

<cache type="org.mybatis.caches.ehcache.EhcacheCache">
 <!-- 緩存創(chuàng)建之后,最后⼀次訪問緩存的時間⾄緩存失效的時間間隔 -->
 <property name="timeToIdleSeconds" value="3600"/>
 <!-- 緩存⾃創(chuàng)建時間起⾄失效的時間間隔 -->
 <property name="timeToLiveSeconds" value="3600"/>
 <!-- 緩存回收策略,LRU表示移除近期使⽤最少的對象 -->
 <property name="memoryStoreEvictionPolicy" value="LRU"/>
</cache>

到此這篇關于Java關于MyBatis緩存詳解的文章就介紹到這了,更多相關Java MyBatis 緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java8 Optional的詳細使用教程

    Java8 Optional的詳細使用教程

    這篇文章主要給大家介紹了關于Java8 Optional的詳細使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • ElasticSearch之索引模板滾動索引實現(xiàn)詳解

    ElasticSearch之索引模板滾動索引實現(xiàn)詳解

    這篇文章主要為大家介紹了ElasticSearch之索引模板滾動索引實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 深入理解equals和hashCode方法

    深入理解equals和hashCode方法

    在Java中,equals和hashCode方法是Object中提供的兩個方法,這兩個方法對以后的學習有很大的幫助,本文就深度來去講解這兩個方法。下面小編帶大家來一起學習吧
    2019-06-06
  • JavaTCP上傳文本文件代碼

    JavaTCP上傳文本文件代碼

    今天小編就為大家分享一篇關于JavaTCP上傳文本文件代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Jenkins環(huán)境搭建實現(xiàn)過程圖解

    Jenkins環(huán)境搭建實現(xiàn)過程圖解

    這篇文章主要介紹了Jenkins環(huán)境搭建實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java編程實現(xiàn)打地鼠文字游戲?qū)嵗a

    Java編程實現(xiàn)打地鼠文字游戲?qū)嵗a

    這篇文章主要介紹了Java編程實現(xiàn)打地鼠文字游戲?qū)嵗a,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • 關于Socket的解析以及雙方即時通訊的java實現(xiàn)方法

    關于Socket的解析以及雙方即時通訊的java實現(xiàn)方法

    本篇文章主要介紹了關于Socket的解析以及雙方通訊的java實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Springboot在IDEA熱部署的配置方法

    Springboot在IDEA熱部署的配置方法

    這篇文章主要介紹了Springboot在IDEA熱部署的配置方法,給大家補充介紹了Intellij IDEA 4種配置熱部署的方法,需要的朋友可以參考下
    2018-04-04
  • Spring源碼解析之Configuration

    Spring源碼解析之Configuration

    今天帶大家來學習Java Spring相關知識,文中對Configuration源碼介紹的非常詳細,有非常多的圖文解說及代碼示例,對正在學習java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • 使用Java反射獲取方法的全路徑名稱的步驟

    使用Java反射獲取方法的全路徑名稱的步驟

    Java反射是一個強大的特性,它允許程序在運行時查詢和修改類的行為,反射可以用于實現(xiàn)很多高級功能,比如動態(tài)代理、依賴注入等,本文將介紹如何使用Java反射來實現(xiàn)這一功能,需要的朋友可以參考下
    2024-07-07

最新評論