mybatis的二级缓存有什么问题_Spring三级缓存

mybatis的二级缓存有什么问题_Spring三级缓存Mybatis二级缓存的缺陷

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  • 一级缓存默认是开启的(但是整合了Spring,Mybatis的一级缓存默认就失效了)
  • 二级缓存是要手动配置开启的(二级缓存是mapper级别的缓存,可以跨SqlSession)

Mybatis二级缓存

开启二级缓存(xml方式):在*Mapper.xml中加入如下代码

<!--eviction: 清空缓存的策略
    readOnly: 是否只读
    flushInterval: 每个60秒刷新一次缓存
    size: 内存大小,最多存储结果对象或者列表的512个引用 -->
<cache readOnly="true" eviction="FIFO" flushInterval="60000" size="512"/>

缓存清除策略

  • LRU – 最近最少使用:移除最长时间不被使用的对象。
  • FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
  • SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
  • WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。

两种方式二选一,如果都配置会报错:Caches collection already contains value for com.lixianhe.dao.UserMapper

注意:使用Mybatis二级缓存必须是xml写SQL语句,不能使用注解写SQL语句

缓存的执行顺序

  • 先从二级缓存中查询,二级缓存没有进入SqlSession中查询
  • SqlSession没有就去数据库查询,然后存到一级缓存中,查询完关闭SqlSession
  • 一级缓存再提交给二级缓存

在开启二级缓存的情况下执行一条sql

select colA1, colA2, colB1, colB2 
from A, B 
where ...
  1. A表执行了上述的sql
  2. B表更新了字段cloB1,colB2
  3. A表再次执行了上述的sql(前提没有执行insert、update、delete)

A表第二次就查询出了脏数据(B表的数据就是脏数据),这个问题对二级缓存来说是一个无解的问题

因此Mybatis二级缓存的使用用一个前提,必须保证所有的增删改查都在同一个namespace下才行

由于二级缓存的弊端,所以并不建议在实际生产中使用,而是在外部实现自己的缓存,如使用Redis做缓存

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191279.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中两个list取交集_判断两个list是否有交集

    java中两个list取交集_判断两个list是否有交集List&lt;int&gt;a1=newList&lt;int&gt;{1,2,3,4,5};List&lt;int&gt;a2=newList&lt;int&gt;{3,4,5,6,7};vara3=a1.Intersect(a2);foreach(varitemina3){Console.WriteLine(it…

    2022年10月7日
    6
  • pstools使用教程

    pstools使用教程pstools是sysinternals开发的一个功能强大的nt/2k远程管理工具包。官方网址为http://www.sysinternals.com/下载地址为http://www.sysinternals.com/files/Pstools.zipPstools主要包含以下程序:(1)psexecpsexec是一个远程执行工具…

    2025年5月22日
    2
  • 5g 云游戏_5G切片认证

    5g 云游戏_5G切片认证随着5G网络的快速部署和商用,5G与垂直行业应用的结合也日益紧密。因此,具备5G特性的网络能力将打造持续升级的业务体验,不断提升客户服务质量。2020年,5G即将进入SA(独立组网)规模商用部署期。作为一项5GSA的专属技术,网络切片所提供的面向差异化应用的网络定制化和专属保障能力,将使5G网络最大程度地提升用户体验方面的价值潜力。在互联网应用领域,业界普遍认为5G技术的成熟和商用将带来云游戏、在线视频直播等互联网价值应用的爆发。5G端到端切片技术能够有效支撑OTT多业务应用场景的需求并提供定制化的体验保

    2022年10月2日
    4
  • SqlServer2019安装教程-自定义安装

    SqlServer2019安装教程-自定义安装SqlServer2019安装教程-基本安装:https://blog.csdn.net/qq_33556442/article/details/102848891搜索SqlServer2019进入官方网站,点击下载(时间稍微有点长)选择下载的环境,这里是Windows的下载(时间稍微有点长,请耐心等待)进入最终的下载界面,点击【Continue】https:/…

    2022年7月13日
    17
  • Ubuntu20.04安装输入法_ubuntu20中文输入法

    Ubuntu20.04安装输入法_ubuntu20中文输入法这篇文章主要介绍了ubuntu20.04中文输入法安装步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧本文安装谷歌输入法。其实之前一直用的是搜狗输入法,因为20.04取消qt4了没装成,就去尝试别的输入法了。发现谷歌输入法用起来极舒服,比sougouforlinux好用多了。记得谷歌的中文输入法主要是北京分部在做,对googlecn的好感度飙升!!!安装fcitx-googlepinyinCtrl+Alt+T..

    2022年9月26日
    3
  • android游戏引擎andengine学习系列三:绘制游戏虚拟摇杆

    android游戏引擎andengine学习系列三:绘制游戏虚拟摇杆如何高效的学习,这才是我们最值得去学习的。  andengine中绘制虚拟游戏摇杆非常简单,只需要实现AnalogOnScreenControl模拟摇杆类,在设置一些属性即可。先看效果图:左边的摇杆是控制精灵上下左右移动,右边的摇杆空值精灵的旋转。代码结构跟andengine学习系列二一样,其中很多注释在系列二中有说明,在该章内便不多复述。onLoadEngine()方法:

    2025年12月10日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号