一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。

当一个sqlSession结束后该sqlSession中的一级缓存也就不存在了。Mybatis默认开启一级缓存。


二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession去操作数据库得到数据会存在二级缓存区域,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。

Mybatis默认没有开启二级缓存。需要在setting全局参数中配置开启二级缓存。

避免使用二级缓存(可能会读到脏数据)(一个sessionA读到了另一个sessionB的修改数据,然后sessionB发生了回滚)

也就是说,二级缓存它有数据的多session共享机制,但是呢,会导致user在两个命名空间下的数据不一致。

针对一个表的某些操作不在他独立的namespace下进行。

例如在UserMapper.xml中有大多数针对user表的操作。但是在一个XXXMapper.xml中,还有针对user单表的操作。

这会导致user在两个命名空间下的数据不一致。如果在UserMapper.xml中做了刷新缓存的操作,在XXXMapper.xml中缓存仍然有效,如果有针对user的单表查询,使用缓存的结果可能会不正确。

更危险的情况是在XXXMapper.xml做了insert,update,delete操作时,会导致UserMapper.xml中的各种操作充满未知和风险。

框架:mybatis的缓存机制相关推荐

  1. MyBatis:缓存机制详解

    本篇内容包括:MyBatis 缓存机制概述.一级缓存与二级缓存的介绍.配置和具体流程. 一.MyBatis 缓存机制概述 在我们常见的 OLTP(on-line transaction process ...

  2. MyBatis的缓存机制详解

    MyBatis的缓存机制详解 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,缓存可以极大的提升查询效率.MyBatis中默认定义了两级缓存,分别是一级缓存和二级缓存. ( ...

  3. mybatis的缓存机制是怎么样的?

    正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持. 1.缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 ...

  4. Hibernate和MyBatis的缓存机制和比较

    原文地址:https://my.oschina.NET/u/1445731/blog/416200?p=%7B%7BtotalPage%7D%7D Mybatis缓存 分为1级缓存和2级缓存,2级缓存 ...

  5. 11【MyBatis的缓存机制】

    文章目录 二.Mybatis缓存机制 2.1 缓存介绍 2.2 一级缓存 2.2.1 一级缓存相关参数 2.2.2 一级缓存测试 2.2.3 一级缓存清空 2.2.3.1 设置localCacheSc ...

  6. mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache

    1      查询缓存 1.1  什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在 ...

  7. MyBatis之缓存机制

    缓存即为存在内存中的临时数据.将用户经常查询的数据存放在缓存(内存)中,用户去查询数据就不用去每次去数据库中查询,而是去缓存中查询,从而提高了查询的效率,解决了高并发系统的性能问题.MyBatis提供 ...

  8. (十二)Mybatis的缓存机制

    文章目录 环境 Mybatis的缓存 一级缓存 一级缓存失效 方式一 方式二 二级缓存 MyBatis集成EhCache缓存 Mybatis学习目录 上一篇:(十一)MyBatis的高级映射及延迟加载 ...

  9. EduSoho框架DAO层缓存机制

    EduSoho框架从2013年发布首个开源版本以来,收到了几万条用户真实需求及优化建议.Edusoho主产品历时5年多的不间断的迭代,发布了380多个版本,目前已得到了国内多家互联网巨头企业及大型培训 ...

最新文章

  1. C#从SQL server数据库中读取l图片和存入图片
  2. 新能源汽车:大变革催生十万亿市场空间
  3. ios网络学习------8 xml格式数据的请求处理 用代码块封装
  4. 直播 NO.5 | Facebook 田渊栋:用深度(强化)学习为组合优化寻找更好的启发式搜索策略...
  5. 将PostgreSQL PL / Java安装为PostgreSQL扩展
  6. php 图片系统,Linger
  7. JavaScript实现省市选择功能,jQuery,Json
  8. paip.支付宝自动反退款器
  9. 最详细教学--实现win10 多用户同时远程登录内网机--win10+frp+rdpwrap+阿里云服务器
  10. 火狐浏览器添加restclient.xpi 添加插件时候遇见的 附件未经验证无法安装
  11. 傅里叶快速算法(FFT)的理解与实现
  12. 从大数据看直播答题的春节大考,突围方向在哪?
  13. My Sixth-Third Page - 爬楼梯 - By Nicolas
  14. linux怎么样用终端打开百度,linux下用终端访问百度网站.doc
  15. 正睿17+2天集训总结TOT
  16. 免费使用GPU服务器
  17. 使用 Excel 画像素画
  18. 测绘资质高性能数据服务器,测绘资质分级标准2020年
  19. 城市热点认证计费系统应用
  20. 【转】Yii2开源电商系统 fecshop

热门文章

  1. WinAPI: waveOutGetErrorText - 根据错误号得到错误描述
  2. J2EE 字符 字节 编码知识概念
  3. System Analysic utility tools
  4. Python初学者之ImportError: No module named moviepy.editor 的解决办法
  5. nurbs非均匀有理B样条实现船体重建
  6. 可重入函数与不可重入函数(转)
  7. 计算机更新要联网吗,解决steam需要在线进行更新。请确认您的网络连接正常的方法...
  8. 无法更改域名 php网页,WordPress更改新域名后网站无法正常运行怎么办?
  9. 二线城市IT人员如何发展
  10. 聊聊flink的consecutive windowed operations