mybatis的二级缓存

在项目中使用mybatis时一般会有二级缓存的问题下面就来介绍下二级缓存。

1.先介绍一级缓存?

一级缓存就是Session级别的缓存。一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中。

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


2.二级缓存?

二级缓存SessionFactory级别的缓存。顾名思义,
二级缓存是SessionFactory(mapper?)级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession去操作数据库得到数据会存在二级缓存区域,多个SqlSession可以共用二级缓存(理解:就是如果同一个sessionFactory创建的某个session执行了相同的操作,mybatis就会从二级缓存中拿结果,而不会再去连接数据库,就是查询的时候会把查询结果缓存到二级缓存中。),二级缓存是跨SqlSession的。严格意义上说,SessionFactory缓存分为两类:内置缓存和外置缓存。我们通常意义上说的二级缓存是指外置缓存。
二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同。
简单点说就是一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要每一个用户访问时都去查询数据库,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。因此配置二级缓存将是非常必要的。Mybatis默认没有开启二级缓存需要在setting全局参数中配置开启二级缓存。

3.配置二级缓存:

在核心配置SQLMapConfig.xml配置文件中配置:

<settings>  
    <setting name="cacheEnabled" value="true"/>   
</settings> 

还有关于分布式缓存框架(ehcache)是一个纯Java的进程内缓存框架更多可参考下面的网址。

http://blog.youkuaiyun.com/isea533/article/details/44566257



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值