第十章 Mybatis中缓存机制
10.1 缓存概述
- 生活中缓存
- 缓存一些音频、视频优势
- 节约数据流量
- 提高播放性能
- 缓存一些音频、视频优势
- 程序中缓存【Mybatis缓存】
- 使用缓存优势
- 提高查询效率
- 降低服务器压力
- 使用缓存优势
10.2 Mybatis中的缓存概述
-
一级缓存
-
二级缓存
-
第三方缓存
10.3 Mybatis缓存机制之一级缓存
-
概述:一级缓存【本地缓存(Local Cache)或SqlSession级别缓存】
-
特点
- 一级缓存默认开启
- 不能关闭
- 可以清空
-
缓存原理
- 第一次获取数据时,先从数据库中加载数据,将数据缓存至Mybatis一级缓存中【缓存底层实现原理Map,key:hashCode+查询的SqlId+编写的sql查询语句+参数】
- 以后再次获取数据时,先从一级缓存中获取,如未获取到数据,再从数据库中获取数据。
-
一级缓存五种失效情况
-
不同的SqlSession对应不同的一级缓存
-
同一个SqlSession但是查询条件不同
-
同一个SqlSession两次查询期间执行了任何一次增删改操作
- 清空一级缓存
- 同一个SqlSession两次查询期间手动清空了缓存
- sqlSession.clearCache()
- 同一个SqlSession两次查询期间提交了事务
- sqlSession.commit()
-
10.4 Mybatis缓存机制之二级缓存
-
二级缓存【second level cache】概述
- 二级缓存【全局作用域缓存】
- SqlSessionFactory级别缓存
-
二级缓存特点
- 二级缓存默认关闭,需要开启才能使用
- 二级缓存需要提交sqlSession或关闭sqlSession时,才会缓存。
-
二级缓存使用的步骤:
① 全局配置文件中开启二级缓存
② 需要使用二级缓存的映射文件处使用cache配置缓存
③ 注意:POJO需要实现Serializable接口