1.1. 什么是缓存
缓存就是将数据放在内存的缓冲区或文件上.查询时,如果数据已经存在,就不会再去查询数据库.
1.2. 缓存的作用
将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。
1.3. 缓存的分类
mybatis一级缓存是一个SqlSession级别,sqlsession只能访问自己的一级缓存的数据,二级缓存是跨sqlSession,是mapper级别的缓存,对于mapper级别的缓存不同的sqlsession是可以共享的。
1.4. 一级缓存
一级缓存默认是打开的一级缓存就是会话(Session)级别的缓存,就是说,同一个会话数据会缓存在缓冲区,只要会话(Session)不关闭,不管查询N次数据库,其实都是只查询了一次.
关闭一级缓存三种方式
1.通过session.clearCache();
2.操作数据库(增删改) commit()操作
3.通过关闭session.close();
1.1.1.1.5. 二级缓存
Mybatis里面,二级缓存就是文件级别的缓存.就是将每一个mapper映射文件查询的结果缓存在缓存区.即使关闭了会话(session),缓存也还在.
默认情况:只要发生了增,删,改,才会清除缓存.
2.1. 配置二级缓存的步骤
1.必须将缓存的实体类加上序列化接口
import java.io.Serializable; |
2.映射文件配置缓存的支持
3.配置启动二级缓存,新版本已经是true(可以不配)
2.2. 禁用二级缓存
对于查询频率较高的sql,需要禁用二级缓存。
useCache="false"
2.3. 刷新二级缓存
增,删,改操作(commit操作)刷新缓存
在insert/delete/update设置 flushCache="false"
2.4. 二级缓存应用场景
对于访问多的查询请求且用户对查询结果实时性要求不高,此时可采用mybatis二级缓存技术降低数据库访问量,提高访问速度,业务场景比如:耗时较高的统计分析sql、电话账单查询sql等。
2.5. Mybatis整合第三方缓存框架ehcache
配置
1.引入ehcache的jar包
2.配置mapper里的cache标签
注意事项:
Ehcache需要使用slf4j的日志支持