Mybatis中的一级缓存和二级缓存
创始人
2024-06-01 07:38:08

Mybatis作为一款强大的ORM框架,其中也用到了缓存来加速查询,今天我们一起来探讨下。
Mybatis可以使用懒加载来提高查询的效率,并且可以通过缓存来提高查询的效率。其中包括有一级缓存和二级缓存。

一级缓存是sqlSession级别的缓存,这里先介绍一下SqlSession。

SqlSession是mybatis的重要构建之一,可以类比为我们用jdbc所生成的connection,这里我们通过SqlSession可以实现增删改查。不过现在更加推荐使用mapper的形式。

SqlSession提供select/insert/update/delete方法,在旧版本中使用使用SqlSession接口的这些方法,但是新版的Mybatis中就会建议使用Mapper接口的方法。从底层实现来说:通过动态代理技术,让接口跑起来,之后采用命令模式,最后还是采用了SqlSession的接口方法(getMapper()方法等到Mapper)执行SQL查询(也就是说Mapper接口方法的实现底层还是采用SqlSession接口方法实现的)。

以上的描述对简单,其实实现起来还是箱单复杂的。

一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的,基于nameSpace。

相关内容

热门资讯

山航开通厦门—克拉克货运航线 (来源:中国民航网)转自:中国民航网《中国民航报》、中国民航网 记者许晓泓 通讯员苏延峰 报道:12...
已获批!福州这一片区将大变样! 新建南湖公园新建、改造8条道路打造生态绿地廊景观带…………近日关于福州三江口南湖片区的多个项目获批意...
“冬墨凝香——中国近现代艺术大... 中新网厦门12月13日电 (林永传 李思源)13日,中国对外文化集团海西(注:海峡西岸)总部揭牌仪式...
柬埔寨内政部:柬泰边境所有过境... 来源:央视新闻客户端当地时间12月13日,柬埔寨内政部发布声明称,柬埔寨与泰国边境的所有过境点即刻起...
好评中国|锚定高质量发展,奋力... 中央经济工作会议12月10日至11日在北京举行。会议总结2025年经济工作,分析当前经济形势,部署2...