mybatis缓存
mybatis缓存原理
假设第一次向数据库发送查询请求,把返回的数据存在缓存里,mybatis缓存使用hashmap来存储数据,到第二次查询的时候,先到缓存里面查找有无这条数据,
如果做了增删改操作,缓存就会清空,避免缓存里的数据与数据库里的数据产生冲突,造成脏读.
mybatis使用hashmap存储缓存数据,key是sql+hashcode+sqlid语句,value是查询出来的映射生成的java对象
mybatis有两种缓存
一级缓存和二级缓存区别:
一级缓存:作用域是同一个SqlSession,不同的线程有各自的SqlSession,如果缓存区有数据,发起查询到各自的SqlSession一级缓存区域查找数据
二级缓存:作用域是同一个namespace,同一个namespace里的SqlSession可以到相同的二级缓存区域查找数据
其中,mybatis默认使用一级缓存
二级缓存用法
1.开启:到mybatis-config.xml配置文件中加入
<setting name="cacheEnabled" value="true"/>
2.在对应的mapper映射文件中加入
在实际开发中,通常使用第三方缓存组件Redis,Ehchache...