栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis缓存机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis缓存机制

Mybatis缓存机制
  • 缓存机制简介
    • 一级缓存的使用
    • 一级缓存失效的几种情况
    • 二级缓存的使用
    • 缓存的相关属性设置
    • 整合第三方缓存

缓存机制简介
  1. Mybatis包含一个非常强大的查询缓存特性,可以方便的进行配置和定制,缓存可以提升查询效率
  2. Mybatis系统中默认定义了两级缓存
    分别是一级缓存和二级缓存
  3. 默认情况下 只有一级缓存(SqlSession级别的缓存也称为本地缓存)开启
  4. 二级缓存需要手动开启和配置,它是基于namespace级别的缓存
  5. 为了提高扩展性。Mybatis定义了缓存接口Cache。我们可以通过Cacahe来定义二级缓存。
一级缓存的使用
  1. List item一级缓存【Local Cache】本地缓存 作用域默认是SqlSession。当Session flush或则是close后,Session中的所有Cacahe将被清空。
  2. 本地缓存不能被关闭,但是可以用clearCache()来清空缓存,或者改变缓存的作用域。
  3. 在Mybatis3.1之后 可以配置本地缓存的作用域。在Mybatis的全局配置文件中配置。设置名:localCacheScope,MyBatis 利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询。 默认值为 SESSION,会缓存一个会话中执行的所有查询。
  4. 一级缓存的工作机制
    同一次会话期间只要查询过的数据都会保存在当前SqlSession的一个Map中
    Key:hashCode +查询的Sql +编写的sql查询语句+参数
    这里是重点
一级缓存失效的几种情况
  1. 不同的SqlSession 对应不同的一级缓存 —>就是创建的sqlsession不同 即从SqlSessionFactory.oppenSession()拿出两个不同的对象
  2. 同一个SqlSession但是查询条件不同
  3. 同一个SqlSession两次查询期间执行了任何一次增删改操作
  4. 同一个SqlSession两次查询期间手动清了缓存
  5. 同一个SqlSession两次查询期间提交了事务
二级缓存的使用
  1. 二级缓存【second level cache】全局作用域缓存
  2. 二级缓存默认不开启 需要手动配置
  3. Mybatis提供二级缓存的接口以及实现,缓存要求POJO实现Serializable接口
  4. 二级缓存在SqlSession关闭或提交之后才会生效
  5. 耳机缓存的使用步骤
    1. 全局配置文件中开启二级缓存
    2. 需要使用二级缓存的映射文件处理使用cache配置缓存
    3. pojo需要实现Serializable接口
    4. 二级缓存在sqlSession关闭或提交之后才会生效
    5. 关闭sqlSession或者提交sqlSession时,将数据缓存到二级缓存
    6. 二级缓存相关属性:
      1. eviction=“FIFO” 清除缓存策略
      2. flushInterval 刷新间隔 单位毫秒
      3. size 应用数目 正整数
      4. readOnly 只读true/false
缓存的相关属性设置
  1. 全局setting的cacheEnabled:配置二级缓存的开关 一级缓存一直是打开的
  2. select 标签的useCache属性:这个属性是用来配置这个select是否使用二级缓存 默认为true 一级缓存是一直使用的
  3. 所有的增删改查标签中的flushCache属性:增删改查默认为flushCache=true。Sql执行后会同时清空一级和二级缓存,默认查询是flushCache=false.
  4. sqlSession.clearCache():只是用来清除一级缓存
整合第三方缓存
  1. 为了提高扩展性。MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存
  2. EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991835.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号