mybatis缓存的解释,概述mybatis的缓存

XIAO 2020-06-04 18:39:55 java常见问答 8808

说起持久层框架,我们不禁会想起mybatis,从而不能避免的需要了解它的缓存机制,所以有兴趣的朋友们可以跟小编一起来看看哦。

首先是,一级缓存(SqlSession)。它默认就可以使用的,其框架处理缓存就是依赖sql去映射id ,因为mybatis的内部缓存就是使用一个HashMap,key是hashcode+statementId+sql语句。Value就是查询出来的结果集映射成的java对象。

因为一级缓存的作用域就是一个SqlSession ,所以一旦session发生了变化,一级缓存就·失败了,而且在同一个SqlSession里面,如果执行相同的查询SQL,第一次会去查询数据库,并且写到缓存里面;第二次就会直接从缓存里面去取。如果执行SQL时两次查询中间发生了增删改操作的话,那么SqlSession的缓存会清空。

mybatis缓存的解释  概述mybatis的缓存

每次执行查询语句会先去缓存中查找的,如果找不到了,才会去数据库里面查询,然后再把结果写到缓存里面去。

我们再来看看,二级缓存(SqlSessionFactory),它默认是无法使用的,我们如果想要使用,就需要其对进行相关配置, 在映射文件中增加标签

这个要求缓存类必须实现可序列化接口的。

mybatis缓存的解释  概述mybatis的缓存

需要了解的是,二级缓存是mapper级别的。而mybatis默认就是没有开启二级缓存的。

所以我们第一次调用mapper下的SQL去查询用户信息时,查询到的信息会存到该mapper对应的二级缓存区域里面。

在第二次调用相同namespace下的mapper映射文件里面相同的SQL去查询用户信息时,就会去对应的二级缓存内取结果了。

要是调用相同namespace下的mapper映射文件中的增删改SQL了,并且执行了commit操作。那么就会清空该namespace下的二级缓存了。

好了,以上就是有关mybatis缓存的所有内容了,还想了解更多java常见问答信息,记得关注本站消息获取。

推荐阅读:

mybatis二级缓存原理是怎样的?原理详解

mybatis二级缓存缺陷是什么?有什么弊端?

mybatis缓存机制面试都问些什么?mybatis缓存面试题及答案整理!