MyBatis的缓存问题
文章目录
- 一、一级缓存
- 1.介绍
- 2.一级缓存失效的四种情况:
- 二、二级缓存
- 1.介绍
- 2.二级缓存开启的条件
- 3.二级缓存失效的一种情况:
- 三、MyBatis缓存查询的顺序
- 四、整合第三方缓存(针对二级缓存)
一、一级缓存
1.介绍
MyBatis的一级缓存是SqlSession级别的,当使用同一个SqlSession进行相同的查询操作时,第一次的查询数据会被缓存,后面的查询操作会从缓存中进行数据获取,并不会访问数据库。一级缓存默认是开启的。
2.一级缓存失效的四种情况:
- 使用的不是用一个SqlSession
- 两次查询的条件不同
- 两次查询操作中进行增删改操作
- 手动清除了缓存,
sqlSession.clearCache()
二、二级缓存
1.介绍
MyBatis的二级缓存是SqlSessionFactory级别的,即通过同一个SqlSessionFactory所获取SqlSession对象查询的数据会被缓存,再通过同一个SqlSessionFactory所获取的SqlSession查询相同的数据会从缓存中获取。二级缓存默认是关闭的,需要满足以下条件才能开启。
2.二级缓存开启的条件
- 在核心配置文件中,设置全局配置属性cacheEnabled=“true”,默认为true,不需要设置
- 在映射文件中设置标签
<cache/>
- 二级缓存必须在SqlSession关闭或提交之后有效
- 查询的数据所转换的实体类类型必须实现序列化的接口,
implements Serializable
3.二级缓存失效的一种情况:
- 两次查询操作中进行增删改操作
三、MyBatis缓存查询的顺序
- 先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。
- 如果二级缓存没有命中(log中会生成命中率),再查询一级缓存
- 如果一级缓存也没有命中,则查询数据库
- SqlSession关闭之后,一级缓存中的数据会写入二级缓存,二级缓存中的数据更多一些
四、整合第三方缓存(针对二级缓存)
可以通过jar引入第三方的缓存
MyBatis的缓存问题相关推荐
- 深入了解MyBatis二级缓存
深入了解MyBatis二级缓存 一.创建Cache的完整过程 我们从SqlSessionFactoryBuilder解析mybatis-config.xml配置文件开始: Reader reader ...
- springboot mybatis 事务_SpringBoot 下 Mybatis 的缓存
"IT魔幻屋"致力于让你遇见更好的自己! 说起 mybatis,作为 Java 程序员应该是无人不知,它是常用的数据库访问框架.与 Spring 和 Struts 组成了 Java ...
- 通过源码分析MyBatis的缓存
前方高能! 本文内容有点多,通过实际测试例子+源码分析的方式解剖MyBatis缓存的概念,对这方面有兴趣的小伙伴请继续看下去~ MyBatis缓存介绍 首先看一段wiki上关于MyBatis缓存的介绍 ...
- Mybatis二级缓存原理
记录是一种精神,是加深理解最好的方式之一. 最近看了下Mybatis的源码,分析了二级缓存的实现方式,在这里把他记下来.虽然这不复杂,对这方面的博客也有很多,写的也很好.但我坚信看懂了是其一,能够教别 ...
- mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
1 查询缓存 1.1 什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在 ...
- Mybatis一级缓存,二级缓存的实现就是这么简单
介绍 又到了一年面试季,所以打算写一点面试常问的东西,争取说的通俗易懂.面试高级岗,如果你说熟悉Mybatis,下面这些问题基本上都会问 Mybatis插件的实现原理? 如何写一个分页插件? Myba ...
- (转)mybatis一级缓存二级缓存
一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言.所以在参数和SQL完全一样的情况下,我们使用同一个SqlSess ...
- Mybatis一级缓存、二级缓存
一级缓存:SqlSession mybatis一级缓存是指在内存中开辟一块区域,用来保存用户对数据库的操作信息(sql)和数据库返回的数据,如果下一次用户再执行相同的请求,那么直接从内存中读数数据而不 ...
- MyBatis-学习笔记11【11.Mybatis的缓存】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- mybatis查询缓存——(十三)
1. mybatis缓存介绍 如下图,是mybatis一级缓存和二级缓存的区别图解: mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. ...
最新文章
- 追忆童年,教你用Python画出儿时卡通人物
- 混合使用Azure LB和ILB访问相同web服务(2)
- boost::core::bit_width的测试程序
- Android SQL语句实现数据库的增删改查
- django日志使用TimeRotateFileHandler
- 算到怀疑人生!如何用并查集解决朋友圈个数问题?
- 网易云基于 Kubernetes 的深度定制化实践
- Jenkins持续集成学习-搭建jenkins问题汇总
- 修改Wordpress插件---advanced-access-manager.1.7.3---
- photoshop cs6 界面字体太小解决方法
- SVN上传的时候没法显示文件名,只显示后缀名
- 云服务器无法连接怎么办
- Eclipse中文版的,怎么变成英文版
- QQ空间人气精灵王 QQ空间人气提升
- 何时需要对时间序列进行Log Transformation
- 微信公众号模板如何使用?公众号模板教程!
- Win8.1 IE11 浏览器无法打开任何网页的解决办法
- python怎么同时对多行代码进行注释?
- MATLAB初阶绘图
- 视频转换成gif (知乎)