Mybatis一级、二级缓存

Mybatis的一级缓存默认开启,基于SqlSession,存储相同查询请求的结果,SqlSession关闭时缓存消失。在Spring整合中,由于每次请求新建SqlSession,一级缓存无法跨Session共享。二级缓存默认关闭,是SqlSessionFactory级别的,不同SqlSession间可共享,但需注意事务和清理操作对其的影响。
摘要由CSDN通过智能技术生成

mybatis一级缓存
一级缓存是默认开启的,他是用来保存用户对数据库的操作和数据库返回的数据,结果会存入到 SqlSession为我们提供的一块区域中。该区域的结构是一个Map。
如果下一次用户再执行相同的请求,那么直接从内存中读数数据而不是从数据库读取。
这里要注意一个点,因为一级缓存是依赖于SqlSession对象的,当SqlSession对象消失时,Mybaits的一级缓存也就消失了。
当Mybaits与Spring整合的时候,不带Spring事务的方法内,每次请求数据库,都会新建一个SqlSession,这时候是使用不到一级缓存的,除了事务问题,还有一些问题也会影响到一级缓存,比如调用了Sqlsession的修改、添加、删除、commit()、close()等方法时,一级缓存也会被清空。

mybatis二级缓存
Mybatis的二级缓存是默认关闭的,它指的是Mybatis中SqlSessionFactory对象的缓存,由同一个SqlSessionFactory对象创建的SqlSession共享其二级缓存。即使开启了二级缓存,不同的sqlsession之间的缓存数据也不是想互访就能互访的,必须等到sqlsession关闭了以后,才会把其一级缓存中的数据写入二级缓存。

SqlSession对象中存放的是返回数据的对象,而SqlSessionFactory对象中存放的是数据

总结
一级缓存与二级缓存的不同之处:

1、Mybatis的一级缓存默认开启,而二级缓存默认关闭。
2、Mybatis的一级缓存指的是Mybaits中SqlSession对象的缓存,而二级缓存指的是SqlSessionFactory对象的缓存。一个SqlSessionFactory对象包括多个SqlSession对象。
3、SqlSession对象中存放的是返回数据的对象,而SqlSessionFactory对象中存放的是数据,不是对象。
4、Mybatis和Spring整合的时候,一级缓存与事务有关,而二级缓存与事务无关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值