mybatis缓存策略

1.1 一级缓存

  • 像大多数的持久化框架一样,mybatis也提供了缓存策略,通过缓存策略来减少数据库的查询次数,从而提高性能。Mybatis中分为一级缓存和二级缓存

mybatis缓存策略_第1张图片 

  • 一级缓存是基于SQLSession的缓存,一级缓存的内容不能跨SQLSession。由mybatis自动维护。
  • 二级缓存是基于映射文件的缓存(namespace),缓存范围比一级缓存更大,不同的SQLSession可以访问二级缓存的内容。哪些数据放入二级缓存需要自己指定。(常用,不经常修改,例如:类别,部门) 

1.2 二级缓存

  • 二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个 SqlSession可以共用二级缓存,二级缓存是跨 SqlSession 的。

mybatis缓存策略_第2张图片 

  • 首先开启 mybatis 的二级缓存。
    sqlSession1 去查询用户信息,查询到用户信息会将查询数据存储到二级缓存中。
    sqlSession2 去查询与 sqlSession1 相同的用户信息, 首先会去缓存中找是否存在数据,如果存在直接从缓存中取出数据。

    如果 SqlSession3 去执行相同 mapper 映射下 sql,执行 commit 提交, 将会清空该 mapper 映射下的二级缓存区域的数据。

1.3 Redis和Mybatis都有缓存,具体使用哪个呢?

可以使用Mybatis操作redis

哪个缓存更好?

     Redis可以集群缓存

     Mybatis只适合单机缓存,mybatis的缓存没有持久化

 

你可能感兴趣的:(mybatis框架)