MyBatis的一级缓存和二级缓存

私人笔记,不喜勿喷,喷就揍你

一级缓存不跨sqlsession,不同的sqlsession中的一级缓存不同,每次查询的时候先去一级缓存中查,若没有再到数据库查询,然后存入一级缓存,若执行了commit操作,一级缓存则被清空,设计成会清空是为了防止脏读,一级缓存不需要在.xml中进行设置,默认开启

正式开发时,事务由spring管理,发生在service中,一个service中包括很多mapper方法的调用,当事务开启时,创建一个sqlsession,事务结束时,关闭sqlsession,所有一个service可以使用1级缓存。

二级缓存,默认不开启,每一个namespace有一个二级缓存区域,如果两个mapper的namespace相同,它们的二级缓存区域是同一个。执行commit也会清空对应的二级缓存。

二级缓存的开启,在sqlMapConfig.xml和对应的mapper.xml中都需要进行配置

在mapper.xml中的配置,写一个<cache/>标签就可以了,标签里的参数需要时再配置

 

禁用二级缓存

二级缓存的存储介质不固定,可以是内存也可以是硬盘,或者是远程服务器,所以要求pojo实现序列化接口

session不关闭,数据写不到二级缓存区域

=================================华丽的分割线============================

测试用的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值