开发者社区> 艾贺> 正文

Mybatis 缓存

简介: 简介 一般来说,应用处理请求的速度取决于CPU与应用内存。为了加速我们的应用,我们一般会采取如下措施: 改善应用的算法性能 多台机器,多个CPU进行并行计算 升级CPU等 在应用中,我们需要减少对数据库的访问次数,因为获取数据需要花费时间,如果用能临时的储存获取的数据,供下次再次利用,那对我们将有一些帮助。
+关注继续查看

简介

一般来说,应用处理请求的速度取决于CPU与应用内存。为了加速我们的应用,我们一般会采取如下措施:

  • 改善应用的算法性能
  • 多台机器,多个CPU进行并行计算
  • 升级CPU等

在应用中,我们需要减少对数据库的访问次数,因为获取数据需要花费时间,如果用能临时的储存获取的数据,供下次再次利用,那对我们将有一些帮助。缓存可以帮我们减少这些负载。

我们主要介绍Mybatis的缓存机制,与Mybatis和Encache的结合。

概念

  • Mybatis的一级缓存:指SqlSession。一级缓存的作用域是一个SqlSession。Mybatis默认开启一级缓存。在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作,则SqlSession的缓存清空。

  • Mybatis的二级缓存:指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容,多个SqlSession共享。Mybatis需要手动设置启动二级缓存。在同一个namespace下的mapper文件中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作,则二级缓存清空。

Mybatis缓存的一些配置

  1. 主配置文件中,CacheEnabled 关闭二级缓存,一级缓存仍然可以使用
  2. Mapper.xml文件中,<Select useCache=true>,一级缓存仍然可以使用,关闭的是二级缓存
  3. Mapper.xml文件中,FlushCache,都是默认为true,增删改执行完成之后就会清楚缓存。如果查询也设置这个属性,那么缓存就不会使用
  4. 程序运行中,sqlSession.clearCache() 清楚第一级缓存
  5. 主配置文件中,localCacheScope: 本地缓存作用域(一级缓存),Session,Statement,Global

Mybatis与ehcache结合

Ehcache是一个广泛使用缓存容器。详情请参考官方文档。Mybatis与Encache的集成,只依赖Encache-core包。想用Encache的更多功能,我们引入整个包。
pom.xml文件

        <dependency>
            <groupId>org.mybatis.caches</groupId>
            <artifactId>mybatis-ehcache</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.10.3</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.24</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.10</version>
        </dependency>

然后在Mapper.xml文件中

mapper namespace="org.acme.FooMapper">
  <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
  ...
</mapper>

也可以动态的修改参数

mapper namespace="org.acme.FooMapper">
  <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
    <property name="timeToIdleSeconds" value="3600"/><!--1 hour-->
    <property name="timeToLiveSeconds" value="3600"/><!--1 hour-->
    <property name="maxEntriesLocalHeap" value="1000"/>
    <property name="maxEntriesLocalDisk" value="10000000"/>
    <property name="memoryStoreEvictionPolicy" value="LRU"/>
  </cache>
  ...
</mapper>

一般我们还要再资源目录下配置一个ehcache.xml文件,ehcache.xml文件的详细配置请参考ehcache的官方文档。

参考

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13730 0
mybatis开启二级缓存小记
mybatis开启二级缓存小记 1.开启二级缓存 和一级缓存默认开启不一样,二级缓存需要我们手动开启 首先在全局配置文件 mybatis-configuration.xml 文件中加入如下代码: 其次在 UserMapper.xml 文件中开启缓存 我们可以看到 mapper.xml 文件中就这么一个空标签,其实这里可以配置,PerpetualCache这个类是mybatis默认实现缓存功能的类。
1290 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19111 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
23951 0
Mybatis 缓存
简介 一般来说,应用处理请求的速度取决于CPU与应用内存。为了加速我们的应用,我们一般会采取如下措施: 改善应用的算法性能 多台机器,多个CPU进行并行计算 升级CPU等 在应用中,我们需要减少对数据库的访问次数,因为获取数据需要花费时间,如果用能临时的储存获取的数据,供下次再次利用,那对我们将有一些帮助。
1070 0
SSM-MyBatis-18:Mybatis中二级缓存和第三方Ehcache配置
  ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------     二级缓存   Mybatis中,默认二级缓存是开启的。可以关闭。  一级缓存开启的。
1474 0
Mybatis一二级缓存实现原理与使用指南
Mybatis 与 Hibernate 一样,支持一二级缓存。一级缓存指的是 Session 级别的缓存,即在一个会话中多次执行同一条 SQL 语句并且参数相同,则后面的查询将不会发送到数据库,直接从 Session 缓存中获取。
1122 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
32584 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14095 0
+关注
艾贺
专注开发,架构知识
327
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载