MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存:
一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存。一级缓存是MyBatis内部实现的一个特性,用户不能配置,默认情况下自动支持的缓存,用户没有定制它的权利(不过这也不是绝对的,可以通过开发插件对它进行修改);
二级缓存是Application应用级别的缓存,它的是生命周期很长,跟Application的声明周期一样,也就是说它的作用范围是整个Application应用。
一级缓存
1.增删改对一缓的影响,它会自动刷新缓存,把所有缓存数据清空
2.存储的内容:key(SQLID+SQL)+value (检索的结果)
3.节点的flushCache=false,不起作用
4.只要MyBatis,一级不可卸载,天然和MyBatis集成
二级缓存
1.MyBatis的自身带的二级缓存
配置过程:
1,在大配置中配置
<setting name="cacheEnabled" value="true"/> 默认为true
2,实体实现Serializable接口
3.在小配置中配置<cache/>
2.增删改对二级缓存的影响
增删改默认会清空一级和二级缓存。但是我们可以通过设置一个属性flushCache=”false” ,来阻止该操作,但是对于一级缓存不起作用
3. Cache的配置
Evication:剔除缓存对象的策略:(最常用的使用) FIFO(先进先出) LRU(Least Recently Use) 最近最 少使用的对象
Size:缓存对象的个数
Flushineterval:存在的时间,单位是毫秒
Readonly:只读
4.二级缓存的关闭
1.全局的是:在MyBatis-Config.xml中配置
<setting name="cacheEnabled" value="true"/>
2.局部
设置xxx.xml对应的小配置给标签配置属性:usecache=false