Mybatis 缓存

简介

一般来说,应用处理请求的速度取决于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文件中,