Mybatis缓存

Posted 皮皮羊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis缓存相关的知识,希望对你有一定的参考价值。

一级缓存:
在应用运行过程中,我们有可能在一次数据库会话中,执行多次查询条件完全相同的SQL,MyBatis提供了一级缓存的方案优化这部分场景,如果是相同的SQL语句,会优先命中一级缓存,避免直接对数据库进行查询,提高性能。
local-cache-scope: session/statement
session:一个MyBatis会话中执行的所有语句,都会共享这一个缓存
statement: 只对当前执行的这一个Statement有效
 
执行修改操作,一级缓存失效
一级缓存会出现数据脏读
MyBatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,数据库写操作会引起脏数据,建议设定缓存级别为Statement
MyBatis一级缓存内部设计简单,只是一个没有容量限定的HashMap
 
MyBatis一级缓存的生命周期和SqlSession一致
 
二级缓存:
多个SqlSession之间需要共享缓存
catchenabled: true
在分布式环境下,由于默认的MyBatis Cache实现都是基于本地的,分布式环境下必然会出现读取到脏数据,需要使用集中式缓存将MyBatis的Cache接口实现

以上是关于Mybatis缓存的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis源码分析五MyBatis的缓存

转MyBatis学习总结——Mybatis缓存

MyBatis基础:MyBatis缓存

mybatis二级缓存默认开启吗?

SSM框架MyBatis笔记 --- 表之间的关联关系;MyBatis事务;MyBatis缓存机制;ORM概述

MyBatis——Mybatis缓存