Mybatis二级缓存的缺陷
- 一级缓存默认是开启的(但是整合了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 ...
- A表执行了上述的sql
- B表更新了字段cloB1,colB2
- A表再次执行了上述的sql(前提没有执行insert、update、delete)
A表第二次就查询出了脏数据(B表的数据就是脏数据),这个问题对二级缓存来说是一个无解的问题
因此Mybatis二级缓存的使用用一个前提,必须保证所有的增删改查都在同一个namespace下才行
由于二级缓存的弊端,所以并不建议在实际生产中使用,而是在外部实现自己的缓存,如使用Redis做缓存
Mybatis二级缓存的缺陷相关推荐
- 深入了解MyBatis二级缓存
深入了解MyBatis二级缓存 一.创建Cache的完整过程 我们从SqlSessionFactoryBuilder解析mybatis-config.xml配置文件开始: Reader reader ...
- Mybatis二级缓存原理
记录是一种精神,是加深理解最好的方式之一. 最近看了下Mybatis的源码,分析了二级缓存的实现方式,在这里把他记下来.虽然这不复杂,对这方面的博客也有很多,写的也很好.但我坚信看懂了是其一,能够教别 ...
- MyBatis复习(六):MyBatis二级缓存
Mybatis缓存分为一级缓存和二级缓存 MyBatis一级缓存是默认开启的,数据存储范围是SqlSession会话这个级别,当SqlSession关闭后,缓存就会被清除,生命周期非常短. MyBat ...
- Mybatis一级缓存、整合第三方缓存ehcache、Mybatis二级缓存
8. 缓存 8.1 一级缓存 在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,如果不采取一些措施的话,每一次查询都会查询一次数据库,而我们在极短的时间内做了完全相同的查询,那么它们的 ...
- Mybatis 二级缓存简单示例
简介 简单接收Mybatis中二级缓存的使用示例 概览 主要部分如下: 引入Maven依赖 SpringBoot配置文件配置.建库与初始化SQL语句 实体类与Mapper编写 测试 Maven依赖 完 ...
- SpringBoot整合Redis配置MyBatis二级缓存
目录 写在前面 源码获取 一.MyBatis缓存机制 1.1.一级缓存 1.2.二级缓存 二.集成Redis 2.1.安装Redis 2.2.项目引入Redis 2.2.1.Maven依赖 2.2.2 ...
- mybatis二级缓存
mybatis二级缓存 Mybatis中一级缓存 和 二级缓存的区别 一级缓存(本地缓存) 二级缓存(全局缓存) 二级缓存开启 mybatis解读 总结 Mybatis中一级缓存 和 二级缓存的区别 ...
- MyBatis研习录(13)——MyBatis二级缓存
C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View ...
- Mybatis 一级缓存,Mybatis 二级缓存,Mybatis 缓存失效
Mybatis 一级缓存,Mybatis 二级缓存,Mybatis 缓存失效 ================================ ©Copyright 蕃薯耀 2021-06-24 ht ...
最新文章
- SQL Server 2000查询n到m条记录
- oracle job 与存储过程,应用oracle job和存储过程
- python rarfile不支持unicode_python – zipfile提取时的unicode错误
- Exact-k:组合推荐的秘密
- mysql常用调试工具_最常用的8款PHP调试工具
- css transition transform animation例子讲解
- ERP基础知识100问题,值得收藏
- 【AR优秀开源项目】ARCore项目工程汇总
- Linux(九、十)文件权限及网络配置管理
- 初创公司几个投资人,各占多少股份合适?
- 编辑chm格式的文档
- Olly Advanced 1.27
- 【转发】Cortex-M3 处理器
- Android系统版本(截止2022年2月)
- 操作系统实验七 地址映射与共享(哈工大李治军)
- 化工设计常用的三维软件有哪些?SmartPlant 3D、PDMS、SolidWorks......
- html中波浪线线怎么设置,如何在PPT中加波浪线?
- 扫雷计算机教案,四年级上信息技术教案-游戏——扫雷辽师大版
- MySql安装学习记录
- 商汤已通过港交所IPO聆讯,占市场份额11%,募资10亿美元