大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 MyBatis緩存機(jī)制

MyBatis緩存機(jī)制

更新時(shí)間:2021-07-06 16:21:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1170次

簡(jiǎn)介:

mybatis提供查詢緩存,用于減輕數(shù)據(jù)庫(kù)壓力,提高數(shù)據(jù)庫(kù)性能mybatis提供一級(jí)緩存和二級(jí)緩存

一級(jí)緩存:sqlsession級(jí)別的緩存

在操作數(shù)據(jù)庫(kù)時(shí),需要構(gòu)造sqlsession對(duì)象,在對(duì)象中有一個(gè)數(shù)據(jù)結(jié)構(gòu)(HashMap)用于存儲(chǔ)緩存數(shù)據(jù)不同的sqlsession之間的緩存區(qū)域是互相不影響的。

二級(jí)緩存:mapper級(jí)別的緩存

多個(gè)sqlsession去操作同一個(gè)mapper的sql語(yǔ)句,多個(gè)sqlsession可以共用二級(jí)緩存,所得到的數(shù)據(jù)會(huì)存在二級(jí)緩存區(qū)域,二級(jí)緩存是跨sqlsession的二級(jí)緩存相比一級(jí)緩存的范圍更大(按namespace來(lái)劃分),多個(gè)sqlsession可以共享一個(gè)二級(jí)緩存

mybatis緩存

為什么要用緩存?

如果緩存中有數(shù)據(jù),就不用從數(shù)據(jù)庫(kù)獲取,大大提高系統(tǒng)性能。

一級(jí)緩存工作原理:

圖解:

mybatis緩存

操作過(guò)程:

第一次發(fā)起查詢sql查詢用戶id為1的用戶,先去找緩存中是否有id為1的用戶,如果沒(méi)有,再去數(shù)據(jù)庫(kù)查詢用戶信息。得到用戶信息,將用戶信息存儲(chǔ)到一級(jí)緩存中。

如果sqlsession執(zhí)行了commit操作(插入,更新,刪除),會(huì)清空sqlsession中的一級(jí)緩存,避免臟讀

第二次發(fā)起查詢id為1的用戶,緩存中如果找到了,直接從緩存中獲取用戶信息

mybatis默認(rèn)支持一級(jí)緩存。

二級(jí)緩存實(shí)現(xiàn)原理

圖解:

mybatis緩存

首先要手動(dòng)開(kāi)啟mybatis二級(jí)緩存。

在config.xml設(shè)置二級(jí)緩存開(kāi)關(guān) , 還要在具體的mapper.xml開(kāi)啟二級(jí)緩存

1.<settings>
    <!--開(kāi)啟二級(jí)緩存-->
    <setting name="cacheEnabled" value="true"/>       
</settings>

2.需要將映射的javapojo類(lèi)實(shí)現(xiàn)序列化
          class Student implements Serializable{}

3.<!--開(kāi)啟本Mapper的namespace下的二級(jí)緩存-->
<cache eviction="LRU" flushInterval="10000"/>

cache屬性的簡(jiǎn)介:

eviction:代表的是緩存回收策略,目前MyBatis提供以下策略。

(1)LRU(Least Recently Used),最近最少使用的,最長(zhǎng)時(shí)間不用的對(duì)象

(2)FIFO(First In First Out),先進(jìn)先出,按對(duì)象進(jìn)入緩存的順序來(lái)移除他們

(3)SOFT,軟引用,移除基于垃圾回收器狀態(tài)和軟引用規(guī)則的對(duì)象

(4)WEAK,弱引用,更積極的移除基于垃圾收集器狀態(tài)和弱引用規(guī)則的對(duì)象。這里采用的是LRU,

移除最長(zhǎng)時(shí)間不用的對(duì)形象

flushInterval:刷新間隔時(shí)間,單位為毫秒,這里配置的是100秒刷新,如果你不配置它,那么當(dāng)

SQL被執(zhí)行的時(shí)候才會(huì)去刷新緩存。

size:引用數(shù)目,一個(gè)正整數(shù),代表緩存最多可以存儲(chǔ)多少個(gè)對(duì)象,不宜設(shè)置過(guò)大。設(shè)置過(guò)大會(huì)導(dǎo)致內(nèi)存溢出。

這里配置的是1024個(gè)對(duì)象

readOnly:只讀,意味著緩存數(shù)據(jù)只能讀取而不能修改,這樣設(shè)置的好處是我們可以快速讀取緩存,缺點(diǎn)是我們沒(méi)有

辦法修改緩存,他的默認(rèn)值是false,不允許我們修改

操作過(guò)程:

sqlsession1查詢用戶id為1的信息,查詢到之后,會(huì)將查詢數(shù)據(jù)存儲(chǔ)到二級(jí)緩存中。

如果sqlsession3去執(zhí)行相同mapper下sql,執(zhí)行commit提交,會(huì)清空該mapper下的二級(jí)緩存區(qū)域的數(shù)據(jù)

sqlsession2查詢用戶id為1的信息,去緩存找是否存在緩存,如果存在直接從緩存中取數(shù)據(jù)

禁用二級(jí)緩存:

在statement中可以設(shè)置useCache=false,禁用當(dāng)前select語(yǔ)句的二級(jí)緩存,默認(rèn)情況為true

&lt;select id="getStudentById"parameterType="java.lang.Integer"resultType="Student"useCache="false"&gt;

在實(shí)際開(kāi)發(fā)中,針對(duì)每次查詢都需要最新的數(shù)據(jù)sql,要設(shè)置為useCache="false",禁用二級(jí)緩存

flushCache標(biāo)簽:刷新緩存(清空緩存)

<select id="getStudentById" parameterType="java.lang.Integer" resultType="Student" flushCache="true">

一般下執(zhí)行完commit操作都需要刷新緩存,flushCache="true表示刷新緩存,可以避免臟讀

二級(jí)緩存應(yīng)用場(chǎng)景

對(duì)于訪問(wèn)多的查詢請(qǐng)求并且用戶對(duì)查詢結(jié)果實(shí)時(shí)性要求不高的情況下,可采用mybatis二級(jí)緩存,降低數(shù)據(jù)庫(kù)訪問(wèn)量,提高訪問(wèn)速度,如電話賬單查詢

根據(jù)需求設(shè)置相應(yīng)的flushInterval:刷新間隔時(shí)間,比如三十分鐘,24小時(shí)等。。。

二級(jí)緩存局限性:

mybatis二級(jí)緩存對(duì)細(xì)粒度的數(shù)據(jù)級(jí)別的緩存實(shí)現(xiàn)不好,比如如下需求:對(duì)商品信息進(jìn)行緩存,由于商品信息查詢?cè)L問(wèn)量大,但是要求用戶每次都能查詢最新的商品信息,此時(shí)如果使用mybatis的二級(jí)緩存就無(wú)法實(shí)現(xiàn)當(dāng)一個(gè)商品變化時(shí)只刷新該商品的緩存信息而不刷新其它商品的信息,因?yàn)閙ybaits的二級(jí)緩存區(qū)域以mapper為單位劃分,當(dāng)一個(gè)商品信息變化會(huì)將所有商品信息的緩存數(shù)據(jù)全部清空。解決此類(lèi)問(wèn)題需要在業(yè)務(wù)層根據(jù)需求對(duì)數(shù)據(jù)有針對(duì)性緩存。

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"MyBatis緩存機(jī)制",希望對(duì)大家有幫助,想了解更多可查看Mybatis基礎(chǔ)教程,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專(zhuān)業(yè)老師隨時(shí)為您服務(wù)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 一级毛片看真人在线视频 | 国产精品福利在线观看入口 | 日韩一区二区视频 | 亚洲精品乱码久久久久久麻豆 | 九九影院理论片 | 久久久久精彩视频 | 国产资源站| 四虎最新网址入口 | 亚洲综合a | 午夜操| 国产精品视频在线免费观看 | 亚洲欧洲精品视频在线观看 | 伊人伊人伊人伊人 | 日韩精品一区二区三区中文字幕 | 亚洲国产精品成人午夜在线观看 | 亚洲精品高清久久 | 四虎影视永久免费视频观看 | 精品一区二区三区在线观看 | 国产毛片儿 | 久草热久草视频 | 国产在线91 | 久久福利一区二区三区 | 中文字幕二区 | 激情九九| 四虎影音| 国产99久9在线 | 国产香蕉在线精彩视频 | 日韩字幕| 国产精品爱久久久久久久三级 | 中文字幕免费在线看线人动作大片 | av毛片免费看 | 中文字幕亚洲精品第一区 | 亚洲精品视频网 | sese在线播放 | 欧美图片一区二区三区 | 久久精品免费观看视频 | 久久中文字幕在线 | 这里只有精品国产 | 妖精www视频在线观看高清 | 美女国产精品 | 四虎e456tcom |