MyBatis 中一级缓存与二级缓存的区别

MyBatis 提供了两级缓存机制:一级缓存和二级缓存。这两级缓存的主要区别在于它们的范围和用途。

  1. 一级缓存(SqlSession 级别的缓存)

    • 范围:一级缓存是 SqlSession 级别的,也就是说,同一个 SqlSession 中执行的查询结果会被缓存下来。
    • 用途:通常用于减少对数据库的查询次数。例如,在一个操作中,你可能首先根据某些条件查询数据库,然后再根据另一些条件查询数据库。使用一级缓存,你可以将第一次查询的结果缓存下来,并在第二次查询时直接使用,从而减少对数据库的访问。
    • 注意事项:一级缓存只适用于同一个 SqlSession 中。如果你获取了 SqlSession 的副本或重新打开了另一个 SqlSession,那么这个 SqlSession 就不会看到其他 SqlSession 缓存的数据。
  2. 二级缓存(Mapper 级别的缓存)

    • 范围:二级缓存是 Mapper 级别的,也就是说,不同的 SqlSession 可以共享同一个 Mapper 的查询结果。
    • 用途:通常用于跨多个 SqlSession 的数据共享。例如,在分布式系统中,你可能希望在不同的服务器或数据库之间共享某些查询结果。使用二级缓存,你可以将查询结果存储在共享的缓存中,使得不同的 SqlSession 可以访问这些结果。
    • 注意事项:二级缓存需要额外的配置,例如选择合适的缓存策略和存储后端(如 EhCache、Redis 等)。此外,二级缓存可能引入数据一致性问题,因为多个 SqlSession 可能同时修改和访问同一份数据。

简而言之,一级缓存是 SqlSession 内部的缓存,用于减少对数据库的访问;二级缓存是跨 SqlSession 的缓存,用于数据共享和分布式系统。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值