欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MyBatis一級(jí)緩存會(huì)遇到什么坑

這篇文章將為大家詳細(xì)講解有關(guān)MyBatis一級(jí)緩存會(huì)遇到什么坑,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)專注于互助網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供互助營(yíng)銷型網(wǎng)站建設(shè),互助網(wǎng)站制作、互助網(wǎng)頁(yè)設(shè)計(jì)、互助網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造互助網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供互助網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

一級(jí)緩存概念
當(dāng)我們使用Mybatis進(jìn)行數(shù)據(jù)庫(kù)的操作時(shí)候,會(huì)創(chuàng)建一個(gè)SqlSession來(lái)進(jìn)行一次數(shù)據(jù)庫(kù)的會(huì)話,會(huì)話結(jié)束則關(guān)閉SqlSession對(duì)象。那么一個(gè)SqlSession的生命周期即對(duì)應(yīng)于Mybatis的一次會(huì)話。在Mybatis的一次會(huì)話中,我們很有可能多次查詢完全相同的sql語(yǔ)句,如果不采取措施的話,每一次查詢都查詢一次數(shù)據(jù)庫(kù)。而一次會(huì)話時(shí)間一般都是極短的,相同Sql的查詢結(jié)果極有可能完全相同。由于查詢數(shù)據(jù)庫(kù)代價(jià)是比較大的,這會(huì)導(dǎo)致系統(tǒng)的資源浪費(fèi)。

為了解決這個(gè)問(wèn)題,Mybatis對(duì)每一次會(huì)話都添加了緩存操作。這個(gè)緩存的作用域?yàn)橐淮螘?huì)話中。緩存隨著會(huì)話(SqlSession)的創(chuàng)建而產(chǎn)生,隨著會(huì)話結(jié)束而釋放。對(duì)一次會(huì)話的查詢操作,總是先查看緩存中是否存在查詢結(jié)果,如果存在則直接取緩存中的結(jié)果,不存在則查詢數(shù)據(jù)庫(kù)。這樣的話,一次會(huì)話中的完全相同的查詢則只會(huì)查詢一次,節(jié)省了系統(tǒng)資源。

引言

MyBatis 一級(jí)緩存(MyBaits 稱其為 Local Cache)無(wú)法關(guān)閉,但是有兩種級(jí)別可選:

package org.apache.ibatis.session;

/**
 * @author Eduardo Macarron
 */
public enum LocalCacheScope {
 SESSION, //session 級(jí)別的緩存 STATEMENT //statement 級(jí)別的緩存
}

1)session 級(jí)別的緩存

在同一個(gè) sqlSession 內(nèi),對(duì)同樣的查詢將不再查詢數(shù)據(jù)庫(kù),直接從緩存中。

驗(yàn)證代碼:

[

public static void main(String[] args) throws IOException { InputStream inputStream = new ClassPathResource("mybatis.xml").getInputStream(); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); System.out.println(mapper.get(1L)); System.out.println("-------------------"); System.out.println(mapper.get(1L));}

輸出:

MyBatis一級(jí)緩存會(huì)遇到什么坑

日志輸出可以看到,第一次查詢通過(guò)數(shù)據(jù)庫(kù)查詢,第二次則沒(méi)有,直接通過(guò)緩存讀取。

坑:這種緩存策略有一個(gè)坑,在服務(wù)集群時(shí)就會(huì)出現(xiàn)問(wèn)題。

假設(shè)現(xiàn)在有一個(gè)服務(wù)集群,有兩個(gè)節(jié)點(diǎn)。

首先,兩個(gè)節(jié)點(diǎn)都進(jìn)行了同樣的查詢,兩個(gè)節(jié)點(diǎn)都有自己的一級(jí)緩存,后續(xù)同樣的查詢,兩個(gè)節(jié)點(diǎn)將不再查詢數(shù)據(jù)庫(kù)。

MyBatis一級(jí)緩存會(huì)遇到什么坑

如果此時(shí)節(jié)點(diǎn) 1 執(zhí)行了 update 語(yǔ)句,那么節(jié)點(diǎn) 1 的一級(jí)緩存會(huì)被刷新,而節(jié)點(diǎn) 2 的一級(jí)緩存不會(huì)改變。

MyBatis一級(jí)緩存會(huì)遇到什么坑

2)statement 級(jí)別的緩存

避坑: 為了避免這個(gè)問(wèn)題,可以將一級(jí)緩存的級(jí)別設(shè)為 statement 級(jí)別的,這樣每次查詢結(jié)束都會(huì)清掉一級(jí)緩存。MyBatis 源碼如下:

MyBatis一級(jí)緩存會(huì)遇到什么坑

在 MyBatis 的配置文件中,添加以下配置:

MyBatis一級(jí)緩存會(huì)遇到什么坑

驗(yàn)證代碼和上面的一樣不變。

輸出:

MyBatis一級(jí)緩存會(huì)遇到什么坑

可以看到,即使是同樣的查詢,每次查詢都是直接讀取數(shù)據(jù)庫(kù)了。

避坑完畢。

緩存是不可能不要緩存的,這個(gè)時(shí)候,就需要使用緩存中間件了,由緩存中間件管理緩存。

MyBatis一級(jí)緩存會(huì)遇到什么坑

關(guān)于“MyBatis一級(jí)緩存會(huì)遇到什么坑”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:MyBatis一級(jí)緩存會(huì)遇到什么坑
分享鏈接:http://chinadenli.net/article4/jggooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)響應(yīng)式網(wǎng)站、關(guān)鍵詞優(yōu)化、微信公眾號(hào)、云服務(wù)器軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
亚洲一区二区精品免费| 精品久久av一二三区| 大伊香蕉一区二区三区| 少妇淫真视频一区二区| 国产又粗又爽又猛又黄的| 日本少妇三级三级三级| 亚洲国产日韩欧美三级| 欧美韩日在线观看一区| 国产毛片不卡视频在线| 国产精品欧美激情在线播放| 国产精品久久久久久久久久久痴汉| 亚洲国产精品久久网午夜| 东北老熟妇全程露脸被内射| 欧美成人黄色一级视频| 国产女高清在线看免费观看| 亚洲国产av国产av| 麻豆tv传媒在线观看| 色偷偷偷拍视频在线观看| 国产精品久久男人的天堂| 一个人的久久精彩视频| 亚洲黄色在线观看免费高清| 国产精品欧美一区二区三区不卡| 日本加勒比在线观看不卡| 亚洲熟女乱色一区二区三区| 国产又大又硬又粗又湿| 色婷婷丁香激情五月天| 国产精品丝袜美腿一区二区| 国产成人亚洲欧美二区综| 黄色污污在线免费观看| 厕所偷拍一区二区三区视频| 九九热这里有精品20| 好吊日视频这里都是精品| 色丁香之五月婷婷开心| 91天堂免费在线观看| 国产免费一区二区不卡| 国产一区二区三区四区中文| 午夜福利国产精品不卡| 国产免费观看一区二区| 免费特黄欧美亚洲黄片| 中文字幕日韩无套内射| 欧美亚洲另类久久久精品|