您现在的位置是:首页 > 正文

求教:MyBatis的缓存到底有用吗?

2024-04-01 00:53:40阅读 6

前言:一下皆是个人观点,期待各位大佬的指正

今天看了下mybatis的缓存,发现其实这个缓存基本可以说是没有用的

为什么没有用呢?

首先:MyBatis分为一级缓存和二级缓存

一级缓存:存在于SqlSession的生命周期中,什么是SqlSession的生命周期呢,简单的来说,只有同一个请求才会是同一个SqlSession,那么就是说只有同一个请求我查询第二次这个缓存才会生效,那么同一个请求查询两次,那么我就认为你这个代码可能写的有问题,所以一级缓存其实完全没有用处。

二级缓存:存在于SqlSessionFactory 的生命周期中,可以理解为跨sqlSession;缓存是以namespace为单位的,不同namespace下的操作互不影响,但是在多人开发的环境下,我的不同的namespace完全是有可能操作同一张表的,那么会导致一个namespace的数据修改了一张表,但是另一个namespace的那张表的数据缓存没被修改,这样查询的数据就会错误!!!这个还是单节点,集群环境的话,这个问题可能更严重,所以二级缓存是不能使用的

网站文章

  • GitHub修改仓库文件

    GitHub修改仓库文件

    GitHub修改仓库文件1.初始化git环境:git init2.创建并修改本地文件(以README文件为例):vi README.md3.添加到暂存区:git add README.md4.保存提交...

    2024-04-01 00:53:31
  • postman接口测试教程和项目实战

    postman接口测试教程和项目实战

    接口指的是实体或者软件提供给外界的一种服务。因为接口能使我们的实体或者软件的内部数据能够被外部进行修改。从而使得内部和外部实现数据交互。所以需要接口。

    2024-04-01 00:53:05
  • cherno-opengl 学习笔记

    cherno-opengl 学习笔记

    2024-04-01 00:52:56
  • 187. Repeated DNA Sequences

    class Solution { public List<String> findRepeatedDnaSequences(String s) { Set<String> set=new HashSet<String>(); Set<String> res=new HashSet<String&...

    2024-04-01 00:52:47
  • openstack neutron L3 HA

    openstack neutron L3 HA

    Openstack Neutron L3的HA。

    2024-04-01 00:52:12
  • XSS 攻击案例

    XSS 攻击案例

    The attacker injects a payload in the website’s database by submitting a vulnerable form with some malicious JavaScriptThe victim requests the web page from the websiteThe website serves the vict...

    2024-04-01 00:52:05
  • ThinkPHP 项目笔记

    1、在模板当中调用PHP函数 生成1到5的

    2024-04-01 00:51:57
  • Vue3路由传值

    传递页面接收页面

    2024-04-01 00:51:28
  • js生成随机数

    JS随机数测试document.write(Math.random());//生成一个0~1之间的很多位数的随机小数document.write(Math.round(Math.random()*9+1));//生成一个1~10(包括1和10)的随机整数document.write(Math.round(Math.random()*90+10));/

    2024-04-01 00:51:21
  • Wide&Deep模型介绍

    Wide&Deep模型介绍

    Wide&Deep模型是和的综合,是谷歌在2016年提出的。正如其名,Wide&Deep模型是由和组成的混合模型。这样的结构特点,使模型兼具了和的优点——能够快速处理并记忆大量历史行为特征,并且具有强大的表达能力。

    2024-04-01 00:51:14