真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Mybatis緩存的原理是什么

Mybatis緩存的原理是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)臨川,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

1、什么是緩存[Cache]

  • 存在內(nèi)存中的臨時(shí)數(shù)據(jù)。

  • 將用戶經(jīng)常查詢的數(shù)據(jù)放在緩存(內(nèi)存)中,用戶去查詢數(shù)據(jù)就不用從磁盤上(關(guān)系型數(shù)據(jù)庫數(shù)據(jù)文件)查詢,從緩存中查詢,從而提高查詢效率,解決了高并發(fā)系統(tǒng)的性能問題。

2、為什么要使用緩存

減少和數(shù)據(jù)庫的交互次數(shù),減少系統(tǒng)開銷,提高系統(tǒng)效率。

3、什么樣的數(shù)據(jù)需要使用緩存

經(jīng)常查詢且不易改變的數(shù)據(jù)

4、Mybatis緩存

  • MyBatis包含一個(gè)非常強(qiáng)大的查詢緩存特性,它可以非常方便地定制和配置緩存。緩存可以極大的提升查詢效率。

  • MyBatis系統(tǒng)中默認(rèn)定義了兩級(jí)緩存:一級(jí)緩存和二級(jí)緩存

    • 默認(rèn)情況下,只有一級(jí)緩存開啟。(SqlSession級(jí)別的緩存,也稱為本地緩存)

    • 二級(jí)緩存需要手動(dòng)開啟和配置,他是基于namespace級(jí)別的緩存。

    • 為了提高擴(kuò)展性,MyBatis定義了緩存接口Cache。我們可以通過實(shí)現(xiàn)Cache接口來自定義二級(jí)緩存

5、一級(jí)緩存

一級(jí)緩存也叫本地緩存:

  • 與數(shù)據(jù)庫同一次會(huì)話期間查詢到的數(shù)據(jù)會(huì)放在本地緩存中。

  • 以后如果需要獲取相同的數(shù)據(jù),直接從緩存中拿,沒必須再去查詢數(shù)據(jù)庫;

6、一級(jí)緩存失效的四種情況

  • sqlSession不同

  • sqlSession相同,查詢條件不同

  • sqlSession相同,兩次查詢之間執(zhí)行了增刪改操作!

  • sqlSession相同,手動(dòng)清除一級(jí)緩存

@Test
public void testQueryUserById(){
  SqlSession session = MybatisUtils.getSession();
  UserMapper mapper = session.getMapper(UserMapper.class);
  User user = mapper.queryUserById(1);
  System.out.println(user);
  session.clearCache();//手動(dòng)清除緩存
  User user2 = mapper.queryUserById(1);
  System.out.println(user2);
  System.out.println(user==user2);
  session.close();
}

所以說,一級(jí)緩存就是一個(gè)map

7、二級(jí)緩存

  • 二級(jí)緩存也叫全局緩存,一級(jí)緩存作用域太低了,所以誕生了二級(jí)緩存

  • 基于namespace級(jí)別的緩存,一個(gè)名稱空間,對(duì)應(yīng)一個(gè)二級(jí)緩存;

  • 工作機(jī)制

    • 一個(gè)會(huì)話查詢一條數(shù)據(jù),這個(gè)數(shù)據(jù)就會(huì)被放在當(dāng)前會(huì)話的一級(jí)緩存中;

    • 如果當(dāng)前會(huì)話關(guān)閉了,這個(gè)會(huì)話對(duì)應(yīng)的一級(jí)緩存就沒了;但是我們想要的是,會(huì)話關(guān)閉了,一級(jí)緩存中的數(shù)據(jù)被保存到二級(jí)緩存中;

    • 新的會(huì)話查詢信息,就可以從二級(jí)緩存中獲取內(nèi)容;

    • 不同的mapper查出的數(shù)據(jù)會(huì)放在自己對(duì)應(yīng)的緩存(map)中;

使用步驟:

核心配置文件

去每個(gè)mapper.xml中配置使用二級(jí)緩存,這個(gè)配置非常簡單;

方式一:

方式二:

這個(gè)更高級(jí)的配置創(chuàng)建了一個(gè) FIFO 緩存,每隔 60 秒刷新,最多可以存儲(chǔ)結(jié)果對(duì)象或列表的 512 個(gè)引用,而且返回的對(duì)象被認(rèn)為是只讀的,因此對(duì)它們進(jìn)行修改可能會(huì)在不同線程中的調(diào)用者產(chǎn)生沖突。

8、結(jié)論

只要開啟了二級(jí)緩存,我們?cè)谕粋€(gè)Mapper中的查詢,可以在二級(jí)緩存中拿到數(shù)據(jù)

查出的數(shù)據(jù)都會(huì)被默認(rèn)先放在一級(jí)緩存中

只有會(huì)話提交或者關(guān)閉以后,一級(jí)緩存中的數(shù)據(jù)才會(huì)轉(zhuǎn)到二級(jí)緩存中

原理圖:

Mybatis緩存的原理是什么

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


分享題目:Mybatis緩存的原理是什么
文章來源:http://weahome.cn/article/jcpood.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部