ORM框架-Mybatis-缓存

本文介绍了MyBatis的一级和二级缓存机制。一级缓存面向SqlSession,生命周期与其一致,不可物理关闭,而二级缓存是全局缓存,可配置关闭,可供所有Session共享。一级缓存默认开启,不跨会话共享,更新操作会导致缓存失效。二级缓存范围更大,跨会话共享,可配置开启,并在CachingExecutor中维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、前言

       mybatis 相比hibernate,也有自身的缓存,分为两层,一级缓存面向SqlSession,生命周期跟Session保持一致,不可以物理关闭;二级缓存是全局缓存,所有的Session共享,可以关闭。

        在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,如果不采取一些措施的话,每一次查询都会查询一次数据库,而我们在极短的时间内做了完全相同的查询,那么它们的结果极有可能完全相同,由于查询一次数据库的代价很大,这有可能造成很大的资源浪费。

         为了解决这一问题,减少资源的浪费,MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候,如果判断先前有个完全一样的查询,会直接从缓存中直接将结果取出,返回给用户,不需要再进行一次数据库查询了。

如下图:为mybatis的缓存架构图:

 

二级缓存部分源码截图:

根据MS配置的flushCache属性来选择是否清理缓存:

根据ms配置的usecache属性来选择是否使用二级缓存:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石头城程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值