欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Mybatis二級緩存的缺陷

 更新時(shí)間:2022年08月19日 16:29:13   作者:李顯赤赤  
本文主要介紹了淺談Mybatis二級緩存的缺陷,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一級緩存默認(rèn)是開啟的(但是整合了Spring,Mybatis的一級緩存默認(rèn)就失效了)

二級緩存是要手動配置開啟的(二級緩存是mapper級別的緩存,可以跨SqlSession)

Mybatis二級緩存

開啟二級緩存(xml方式):在*Mapper.xml中加入如下代碼

<!--eviction: 清空緩存的策略
    readOnly: 是否只讀
    flushInterval: 每個(gè)60秒刷新一次緩存
    size: 內(nèi)存大小,最多存儲結(jié)果對象或者列表的512個(gè)引用 -->
<cache readOnly="true" eviction="FIFO" flushInterval="60000" size="512"/>

緩存清除策略

  • LRU – 最近最少使用:移除最長時(shí)間不被使用的對象。
  • FIFO – 先進(jìn)先出:按對象進(jìn)入緩存的順序來移除它們。
  • SOFT – 軟引用:基于垃圾回收器狀態(tài)和軟引用規(guī)則移除對象。
  • WEAK – 弱引用:更積極地基于垃圾收集器狀態(tài)和弱引用規(guī)則移除對象。

兩種方式二選一,如果都配置會報(bào)錯:Caches collection already contains value for com.lixianhe.dao.UserMapper

注意:使用Mybatis二級緩存必須是xml寫SQL語句,不能使用注解寫SQL語句

緩存的執(zhí)行順序

  • 先從二級緩存中查詢,二級緩存沒有進(jìn)入SqlSession中查詢
  • SqlSession沒有就去數(shù)據(jù)庫查詢,然后存到一級緩存中,查詢完關(guān)閉SqlSession
  • 一級緩存再提交給二級緩存

在開啟二級緩存的情況下執(zhí)行一條sql

select colA1, colA2, colB1, colB2 
from A, B 
where ...

A表執(zhí)行了上述的sql
B表更新了字段cloB1,colB2
A表再次執(zhí)行了上述的sql(前提沒有執(zhí)行insert、update、delete)
A表第二次就查詢出了臟數(shù)據(jù)(B表的數(shù)據(jù)就是臟數(shù)據(jù)),這個(gè)問題對二級緩存來說是一個(gè)無解的問題

因此Mybatis二級緩存的使用用一個(gè)前提,必須保證所有的增刪改查都在同一個(gè)namespace下才行

由于二級緩存的弊端,所以并不建議在實(shí)際生產(chǎn)中使用,而是在外部實(shí)現(xiàn)自己的緩存,如使用Redis做緩存

到此這篇關(guān)于淺談Mybatis二級緩存的缺陷的文章就介紹到這了,更多相關(guān)Mybatis二級緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • @RequestParam?和@RequestBody注解的區(qū)別解析

    @RequestParam?和@RequestBody注解的區(qū)別解析

    在 Spring MVC 中,我們可以使用 @RequestParam 和 @RequestBody 來獲取請求參數(shù),但它們在用法和作用上有一些區(qū)別,這篇文章主要介紹了@RequestParam?和@RequestBody注解的區(qū)別,需要的朋友可以參考下
    2023-06-06
  • 攔截器獲取request的值之后,Controller拿不到值的解決

    攔截器獲取request的值之后,Controller拿不到值的解決

    這篇文章主要介紹了攔截器獲取request的值之后,Controller拿不到值的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot + SpringSecurity 短信驗(yàn)證碼登錄功能實(shí)現(xiàn)

    SpringBoot + SpringSecurity 短信驗(yàn)證碼登錄功能實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot + SpringSecurity 短信驗(yàn)證碼登錄功能實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • 1小時(shí)快速上手RabbitMQ(簡介及安裝過程)

    1小時(shí)快速上手RabbitMQ(簡介及安裝過程)

    RabbitMQ簡稱MQ全稱是Message Queue(消息隊(duì)列),是在消息的傳輸過程中保存消息的容器,多用于分布式系統(tǒng)之間進(jìn)行通信,本文給大家講解了RabbitMQ簡介與安裝,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2023-01-01
  • SpringMVC前后端參數(shù)映射

    SpringMVC前后端參數(shù)映射

    在web開發(fā)中我們都要進(jìn)行前端傳參后端取參的過程,本文主要介紹了SpringMVC前后端參數(shù)映射,針對GET,?POST,?PUT,?DELETE?請求的參數(shù)該如何映射,感興趣的可以了解一下
    2023-08-08
  • SpringBoot添加自定義攔截器的實(shí)現(xiàn)代碼

    SpringBoot添加自定義攔截器的實(shí)現(xiàn)代碼

    這篇文章主要介紹了SpringBoot添加自定義攔截器的實(shí)現(xiàn)代碼,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • 將內(nèi)容寫到txt文檔里面并讀取及刪除的方法

    將內(nèi)容寫到txt文檔里面并讀取及刪除的方法

    本文有個(gè)不錯的示例,主要講解如何將內(nèi)容寫到txt文檔里面、讀取文件里面的內(nèi)容以及清除txt文件里面的內(nèi)容
    2014-01-01
  • 解析SpringBoot中@Autowire注解的實(shí)現(xiàn)原理

    解析SpringBoot中@Autowire注解的實(shí)現(xiàn)原理

    在開發(fā)Java項(xiàng)目時(shí),依賴注入是一種常見的實(shí)現(xiàn)方式,SpringBoot框架通過@Autowired注解來實(shí)現(xiàn)依賴注入的功能,本文將介紹SpringBoot中 Autowired注解實(shí)現(xiàn)的原理
    2023-06-06
  • IntelliJ?IDEA快速查詢maven依賴關(guān)系圖文教程

    IntelliJ?IDEA快速查詢maven依賴關(guān)系圖文教程

    Maven提供了來查看依賴關(guān)系,而IDE往往提供了更加便利的方式,比如Eclipse或者IDEA都有類似的功能,下面這篇文章主要給大家介紹了關(guān)于IntelliJ?IDEA快速查詢maven依賴關(guān)系的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Java AQS信號量Semaphore的使用

    Java AQS信號量Semaphore的使用

    Semaphore來自于JDK1.5的JUC包,直譯過來就是信號量,被作為一種多線程并發(fā)控制工具來使用。本文將詳解其原理與使用方法,感興趣的可以學(xué)習(xí)一下
    2023-02-02

最新評論