一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 深層剖析java應(yīng)用開發(fā)中MyBayis緩存

深層剖析java應(yīng)用開發(fā)中MyBayis緩存

2022-01-04 13:03DrLai Java教程

這篇文章主要為大家深層剖析java開發(fā)中MyBayis緩存,文中講解了Mybatis緩存的分類以及使用的方式,有需要的朋友可以借鑒參考下,希望可以有所幫助

什么是 MyBatis 緩存

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

MyBatis 緩存分類

1、?級(jí)緩存:SqlSession 級(jí)別,默認(rèn)開啟,并且不能關(guān)閉。(默認(rèn)開啟)

操作數(shù)據(jù)庫時(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 語句事,第? 次執(zhí)行完畢會(huì)將結(jié)果保存到緩存中,第?次查詢時(shí)直接從緩存中獲取。 需要注意的是,如果 SqlSession 執(zhí)行了 DML 操作(insert、update、delete),MyBatis 必須將緩存清空以保證數(shù)據(jù)的準(zhǔn)確性。

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

使??級(jí)緩存時(shí),多個(gè) SqlSession 使?同?個(gè) Mapper 的 SQL 語句操作數(shù)據(jù)庫,得到的數(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 語句,參數(shù)也相等,則第?次執(zhí)?成功之后會(huì)將數(shù)據(jù)保存到?級(jí) 緩存中,第?次可直接從?級(jí)緩存中取出數(shù)據(jù)。

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

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

1.1config.xml 配置開啟?級(jí)緩存

?
1
2
3
4
5
6
7
8
settings>
 <!-- 打印SQL-->
 <setting name="logImpl" value="STDOUT_LOGGING" />
 <!-- 開啟延遲加載 -->
 <setting name="lazyLoadingEnabled" value="true"/>
 <!-- 開啟?級(jí)緩存 -->
 <setting name="cacheEnabled" value="true"/>
</settings>

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

?
1
<cache></cache>

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

?
1
2
3
4
5
6
7
8
9
@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)依賴

?
1
2
3
4
5
6
7
8
9
10
<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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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 配置開啟?級(jí)緩存

?
1
2
3
4
5
6
7
8
<settings>
 <!-- 打印SQL-->
 <setting name="logImpl" value="STDOUT_LOGGING" />
 <!-- 開啟延遲加載 -->
 <setting name="lazyLoadingEnabled" value="true"/>
 <!-- 開啟?級(jí)緩存 -->
 <setting name="cacheEnabled" value="true"/>
</settings>

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

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

以上就是深層剖析java開發(fā)中MyBayis緩存的詳細(xì)內(nèi)容,更多關(guān)于Mybatis緩存剖析的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://blog.csdn.net/DrLai/article/details/119786974

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒有升過級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 色一情一乱一伦 | 女人麻豆国产香蕉久久精品 | 四虎永久视频 | 亚洲视频在线观看免费视频 | 99热这里只有精品国产在热久久 | 日日免费视频 | 情欲满载2012美国dvd | 经典千人斩一区二区视频 | 国产成人精品一区二区阿娇陈冠希 | 欧美精品亚洲精品日韩专区va | 猛h辣h高h文湿校园1v1 | 风间由美理论片在线观看 | 欧美高清免费一级在线 | 成人猫咪maomiav永久网址 | 亚洲电影第1页 | www.99精品视频在线播放 | 微拍秒拍99福利精品小视频 | 国产精品福利一区二区亚瑟 | pppd在线播放 | aⅴ导航站| 国产一区二区不卡视频 | 国产特黄a级在线视频 | 韩国久久精品 | 四虎精品视频在线永久免费观看 | 国产精品视频一区二区三区 | 四虎影院免费视频 | 青草悠悠视频在线观看 | 视频免费在线 | 视频大全在线观看网址 | 动漫人物差差差动漫人物免费观看 | 国色天香论坛社区在线视频 | 大奶老太 | 手机在线免费观看高清 | 被强上后我成瘾了小说 | 四虎影视e456fcom四虎影视 | 亚洲高清视频在线 | 无码日韩精品一区二区免费 | 3d欧美人禽交| 人人人人看人人人做人人 | 国产欧美国产精品第一区 | 欧美日本道免费一区二区三区 |