最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java關(guān)于MyBatis緩存詳解

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

什么是 MyBatis 緩存

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

MyBatis 緩存分類

1.⼀級(jí)緩存:SqlSession級(jí)別,默認(rèn)開(kāi)啟,并且不能關(guān)閉.(默認(rèn)開(kāi)啟)

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

2.二級(jí)緩存:Mapper 級(jí)別,默認(rèn)關(guān)閉,可以開(kāi)啟

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

二級(jí)緩存如何使用

1.MyBatis 自帶的二級(jí)緩存

1.1config.xml 配置開(kāi)啟⼆級(jí)緩存

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

1.2Mapper.xml 中配置⼆級(jí)緩存

<cache></cache>

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

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

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

2.1pom.xml 添加相關(guān)依賴

<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 配置開(kāi)啟⼆級(jí)緩存

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

2.4 Mapper.xml 中配置⼆級(jí)緩存

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

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

相關(guān)文章

  • IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新)

    IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新)

    這篇文章主要介紹了IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新),小編測(cè)試這種激活工具也適用idea2022以下所有版本,本篇教程整理的比較詳細(xì),匯總了idea各個(gè)版本的激活工具,激活方法多種多樣,大家選擇一種即可,感興趣的朋友跟隨小編一起看看吧
    2022-09-09
  • seata的部署和集成詳細(xì)介紹

    seata的部署和集成詳細(xì)介紹

    這篇文章主要介紹了Java seata的部署和集成,文章中有詳細(xì)的代碼示例和圖片講解,對(duì)學(xué)習(xí)seata有一定的參考價(jià)值,需要的朋友可以參考一下
    2023-04-04
  • 使用httpclient無(wú)需證書調(diào)用https的示例(java調(diào)用https)

    使用httpclient無(wú)需證書調(diào)用https的示例(java調(diào)用https)

    這篇文章主要介紹了使用httpclient無(wú)需證書調(diào)用https的示例(java調(diào)用https),需要的朋友可以參考下
    2014-04-04
  • Java基于Scanner對(duì)象的簡(jiǎn)單輸入計(jì)算功能示例

    Java基于Scanner對(duì)象的簡(jiǎn)單輸入計(jì)算功能示例

    這篇文章主要介紹了Java基于Scanner對(duì)象的簡(jiǎn)單輸入計(jì)算功能,結(jié)合實(shí)例形式分析了Java使用Scanner對(duì)象獲取用戶輸入半徑值計(jì)算圓形面積功能,需要的朋友可以參考下
    2018-01-01
  • 詳解Java中的JDK、JRE、JVM

    詳解Java中的JDK、JRE、JVM

    本文主要介紹了Java中的JDK、JRE、JVM的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • Java如何從List中刪除元素的正確用法舉例

    Java如何從List中刪除元素的正確用法舉例

    這篇文章主要給大家介紹了關(guān)于Java如何從List中刪除元素的正確用法, 列表List是Java中的一種數(shù)據(jù)結(jié)構(gòu),存放按照添加順序的元素,是個(gè)有序的集合,需要的朋友可以參考下
    2023-07-07
  • Java基礎(chǔ)之Filter的實(shí)例詳解

    Java基礎(chǔ)之Filter的實(shí)例詳解

    這篇文章主要介紹了Java基礎(chǔ)之Filter的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • SpringMVC整合mybatis實(shí)例代碼

    SpringMVC整合mybatis實(shí)例代碼

    MyBatis 的前身就是 iBatis 。是一個(gè)數(shù)據(jù)持久層(ORM)框架。下面通過(guò)本文給大家介紹SpringMVC整合mybatis實(shí)例代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • BlockingQueue隊(duì)列處理高并發(fā)下的日志

    BlockingQueue隊(duì)列處理高并發(fā)下的日志

    這篇文章主要介紹了BlockingQueue隊(duì)列處理高并發(fā)下的日志示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Spring中的@Async原理分析

    Spring中的@Async原理分析

    這篇文章主要介紹了Spring中的@Async原理分析,自定義new ThreadPoolExecutor并調(diào)用invokeAll等進(jìn)行并發(fā)編程,后面發(fā)現(xiàn)只要在方法上添加@Async注解,并使用@EnableAsync進(jìn)行開(kāi)啟默認(rèn)會(huì)使用SimpleAsyncTaskExecutor類型,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

荣成市| 启东市| 改则县| 滦南县| 绥德县| 沈阳市| 桦南县| 沾化县| 二连浩特市| 南靖县| 新和县| 高淳县| 界首市| 健康| 上饶市| 休宁县| 四会市| 万源市| 灵川县| 扶沟县| 灌南县| 景东| 永兴县| 铁岭县| 漳州市| 桐柏县| 渑池县| 抚松县| 西乌| 济宁市| 巫溪县| 夏邑县| 永吉县| 荆门市| 江陵县| 淅川县| 嫩江县| 任丘市| 灵武市| 海丰县| 二连浩特市|