-
MyBatis二级缓存的命中原则:和一级缓存一样
在同一个SqlSessionFactory内
StatementID
查询参数
分页参数
SQL语句
环境
查看全部 -
步骤三:在TempEntity实现Serializable接口。
查看全部 -
步骤二:在tempMapper.xml中,加上<cache/>标签。
查看全部 -
在一级缓存代码基础上,开启二级缓存
步骤一:修改Mybatis.xml文件
查看全部 -
二级缓存的测试部分代码
查看全部 -
开启二级缓存的步骤
修改MyBatis.xml 和 mapper.xml 文件
查看全部 -
二级缓存各个Session共用cache缓存。
查看全部 -
对比一级缓存
一级缓存每个Session有自己的cache缓存。
查看全部 -
MyBatis与Spring集成
未开启事务
每次请求,Spring都会关闭旧的session在创建新的session,所以此时一级缓存无效。
开启事务
在一个事务内,Spring通过ThreadLocal始终使用同一个session,所以此时一级缓存在事务内有效。
查看全部 -
MyBatis一级缓存的设计理念
MyBatis一级缓存是在一个Session内有效的。
一级缓存在一个Session内,有以下特性:
不过期:只要SqlSession存在,没有关闭、提交...这个缓存一直存在。
不更新:Update时只直接清空这个缓存,而不是更新这个缓存的实例。
不限制:不限制一级缓存实例对象的数量。
由于不限制实例对象的数量,故可能会占用大量内存,但实际不用担心:
一般情况下Session的生存时间很短
执行Update会销毁缓存
支持主动销毁缓存
核心:控制Session生存时间!!!
查看全部 -
Update更新,清空缓存 对应代码,如图
包含update、instert、delete
查看全部 -
Rollback回滚,清空缓存 对应代码,如图
查看全部 -
Commit提交,清空缓存 对应代码,如图
查看全部 -
缓存Session关闭,清空缓存 对应代码,如图
查看全部 -
一级缓存的五个命中原则 对应的代码,如图
查看全部
举报