标签:flush ado cache 移除 span cti 命名 lca 本地
MyBatis 提供了一级缓存和二级缓存的支持。
一级缓存是基于PerpetualCache 的 HashMap本地缓存;
一级缓存的作用域是SqlSession,即不同的SqlSession使用不同的缓存空间;
<setting name="localCacheScope" value="SESSION"/>
一级缓存关闭;
一级缓存开启,但是使用了不同的SqlSession进行查询;
使用相同的SqlSession,但是查询条件发生了变化;
使用了相同的查询条件,但是两次查询之间SqlSession执行了commit、clearCache或close(关闭之后查询会报错)操作;
select标签的flushCache属性为true
SqlSession调用commit方法;
SqlSession调用clearCache方法;
select标签的flushCache属性为true;
SqlSession执行了insert、update或delete操作,此时无论三种标签的 flushCache 属性是否为 false;
二级缓存默认也是采用 PerpetualCache,HashMap存储;
二级缓存的存储作用域为 Mapper(确切说是Namespace),即一个Mapper执行了insert、update或delete操作,不影响另外一个Mapper(不同namespace);
二级缓存可自定义存储实现,如 Ehcache、redis;
二级缓存开启后,需要对应的java Bean实现
二级缓存未开启;
第一次查询之后,SqlSession未执行commit或close操作,导致该查询的二级缓存还未生效;
两次查询之间,mapper(同一命名空间)执行了insert、update或delete操作;
insert、update或delete标签的flushCache属性默认为true,此时会清除一级缓存和二级缓存;
insert、update或delete标签的flushCache属性为false时,不会清除二级缓存,依然清空一级缓存;
eviction:缓存回收策略:flushInterval:缓存多长时间清空一次,默认不清空,单位毫秒 ms
readOnly:缓存是否只读
size:缓存觉存放元素个数,默认1024
type:自定义缓存的全类名
标签:flush ado cache 移除 span cti 命名 lca 本地
原文地址:https://www.cnblogs.com/canger/p/10013900.html