码上敲享录 > Mybatis面试题 > Mybatis的一级缓存和二级缓存?

Mybatis的一级缓存和二级缓存?

上一章章节目录下一章 2023-07-16已有126人阅读 评论(0)

MyBatis提供了一级缓存(本地缓存)和二级缓存(全局缓存)两种缓存机制,用于提高数据库访问性能。


1. 一级缓存(本地缓存):

  - 一级缓存是MyBatis默认开启的缓存机制,它的作用范围是SqlSession级别的。也就是说,同一个SqlSession对象中执行的SQL查询结果会被缓存起来,再次执行相同的SQL查询时,会直接从缓存中获取结果,而无需再次发送SQL查询请求。

  - 一级缓存对于同一个SqlSession而言是透明的,开发者无需关心和操作缓存。一级缓存的自动生效使得在同一个SqlSession中执行连续的相同查询或嵌套查询时,可以有效减少与数据库的交互次数,提高查询性能。


2. 二级缓存(全局缓存):

  - 二级缓存的作用范围是Mapper级别的,即多个SqlSession共享同一个Mapper的二级缓存。二级缓存将查询结果缓存到一个公共的缓存区域,供多个SqlSession共享使用。

  - 二级缓存需要在Mapper接口的映射文件中进行配置,并在MyBatis的全局配置文件中启用。开发者可以根据需要选择是否启用二级缓存。

  - 二级缓存对于跨SqlSession的相同查询可以有效提高性能。当多个SqlSession执行相同的查询时,第一个SqlSession会将查询结果缓存到二级缓存中,之后的SqlSession执行相同查询时,直接从缓存中获取结果。

  - 二级缓存缓存的是对象(实体对象)而不是查询结果,因此需要确保查询结果可序列化。


需要注意的是,一级缓存和二级缓存是独立的两个缓存机制。一级缓存是SqlSession级别的,作用范围有限;而二级缓存则是Mapper级别的,作用范围更广,可以被多个SqlSession共享。在实际应用中,可以根据具体情况来合理配置和使用缓存机制,以提高MyBatis的性能和效率。


向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交