-
一级缓存的存储
查看全部 -
MyBatis是怎么判断某两次查询是完全相同的查询?
条件一:要求查询的StatementId必须相同,否则无法命中缓存,即使两个查询语句、参数等完全一样。
条件二:要求传递给SQL的查询参数必须相同,否则无法命中缓存
条件三:要求分页参数必须相同,否则无法命中缓存。缓存粒度是整个分页查询结果,而不是结果中的每个对象。
条件四:要求传递给JDBC的SQL必须完全相同。
条件五:要求执行环境必须相同。
查看全部 -
mybatis缓存比较
查看全部 -
size引用数目
缓存引用的最大数目,默认是1024
当缓存引用达到最大数目时,按照eviction设定的策略执行清除。
查看全部 -
eviction清除策略:
LRU:最近最少使用:移除最长时间不被使用的对象;(LinkHashMap)
FIFO:先进先出:按对象进入缓存的顺序来移除它们;(LinkedList)
SOFT:软引用:基于GC和软引用规则移除对象;(SoftReference)
WEAK:弱引用: 基于GC和弱引用规则移除对象;(WeakReference)
查看全部 -
二级缓存什么时候产生?
要满足一级缓存的产生条件(select)
close session 或者commit session。rollback不能缓存。
缓存的产生:
什么时候销毁?
一级缓存:session关闭、commit提交、rollback回滚、update更新、clearcache清除。
二级缓存:session关闭(创建二级缓存)、
commit提交(创建二级缓存)、update更新(销毁二级缓存,当前mapper文件里面的)
查看全部 -
二级缓存是同一SqlSessionFactory内。其缓存条件和一级缓存一样。
查看全部 -
一级缓存设计理念:
在一个Session内,不更新缓存,直接清空缓存。只有SqlSession不关闭,就不会过期。不限制
查看全部 -
名称一样
参数一样
分页一样
SQL一样
以上条件满足其一都会命中缓存
查看全部 -
mybatis 一级缓存 命中原则:
接口方法名一致 ,mapper中查询标签id相同
在mapper中的 实际参数 必须一致
分页参数必须相同,否则无法命中缓存
传入数据库中的sql语句必须是一致的
要求环境一致
查看全部 -
缓存的销毁图解
查看全部 -
缓存的产生图解
查看全部 -
二级缓存的产生条件
查看全部 -
与spring集成
查看全部 -
加了@Transactional注解的区别
查看全部
举报