MyBatis的缓存机制
1.根据缓存的作用域和生命周期分为2中缓存策略:一级缓存,二级缓存
2.查询缓存的作用域是根据mapper的namespace划分的,相同的namespace的查询数据放在同一个缓存区,不同的namespace的缓存数据互不干扰
3.一旦sqlSession 连接关闭,一级缓存中的数据就会消失,而二级缓存还在
4.一级缓存是和sqlSession在同一线程共享数据,二级缓存是在不同线程(sqlsession)共享数据
5.一级缓存是不能关闭,只到sqlSession关闭
6.一级缓存查询的依据:查询的id相同(查询语句的id)并且sql语句相同,才会拿缓存中的数据
1.增删改对一级缓存的影响:修改,删除,增加都会清空一级缓存(无论是否提交)
2.二级缓存机制是防止同一个sql id,相同的sql语句反复的执行
3.二级缓存的生命周期是和sqlSession一致的
4.开启内置的二级缓存需要2步:
a) 第一步:对实体进行序列化
b) 在映射文件中添加<cache/>标签
缓存命中率
11.增删改对二级缓存的影响:(默认是刷新缓存的也可以配置不刷新)
12.缓存的基本配置<eache/>
14.二级缓存的关闭分为2种:全局关闭,局部关闭
a)全局关闭:
b) 局部关闭:
15.二级缓存的使用原则:
a) 多个namespace不操作同一张表
b) 不要在关联关系表上执行增删改操作
c) 查询多与修改时使用二级缓存
16.第三方二级缓存ehcache(不需要序列化实体)
a)第一步:下载jar包
b) 第二步:映射文件配置
c) 第三步:导入ehcache配置文件
17.二级缓存设计增删改不刷新缓存