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

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。

相关内容

热门资讯

民乐遇见交响乐 中国风吹进悉尼... 中新社悉尼7月8日电 (记者 薄雯雯)“多彩贵州·风行天下”国潮交响音乐会当地时间7日晚在悉尼歌剧院...
俄财政部:上半年联邦预算赤字3... 中新社莫斯科7月7日电 俄罗斯财政部7日表示,据初步估算,2025年上半年俄联邦预算赤字为3.694...
港股流动性显著改善 目前约20...   本报记者 毛艺融  港股市场流动性显著改善。港交所官网数据显示,2025年前6个月的平均每日成交...
锚定长期回报 量化策略赋能指数...   本报记者 昌校宇  在资本市场深化改革与公募基金行业加速转型的背景下,指数化投资成为行业关注的热...
《复杂经济学》:经济不是精密的... (转自:金科之家网)一、本书简介作者布莱恩·阿瑟(W. Brian Arthur)是美国经济学家、复...
辽中区一浴池被临时查封 转自:沈阳日报  本报讯(沈阳日报、沈报全媒体记者徐佳婷)近日,辽中区消防救援大队在消防安全集中整治...
振兴路上|看科技如何赋能粮油作... 转自:黑龙江日报 桦川县“个十百千”大面积单产提升水稻示范田长势喜人。 有机质(碳)是土...
泰信医疗服务混合发起式C净值下... 泰信医疗服务混合型发起式证券投资基金(简称:泰信医疗服务混合发起式C,代码013073)公布7月7日...
新疆乌鲁木齐市乌鲁木齐县发生3... 中国地震台网正式测定:7月8日04时47分,在新疆乌鲁木齐市乌鲁木齐县(北纬43.32度,东经87....
林下“掘金” 转自:黑龙江日报 雪白圆润的猴头菇。 赤松茸喜丰收。 □文/摄 本报记者 刘晓云...