如何理解mybatis的一级缓存?会不会造成数据不一致的问题?

最近在了解mybatis缓存的时候, 看到了一级缓存, 并且默认是打开的,但是我有一个疑惑:

如有两个SqlSession, 假设叫做a,b; 如果a查询一次, 紧接着b更新一次, 然后此时a再次查询,是不是查询到的还是老数据

所以是不是我对SqlSession理解不到位? 如果两个用户并发在接口上请求, 是不是大概率不在一个SqlSession上? 如果是, 那会不会出现脏读问题?


回答:

如有两个SqlSession, 假设叫做a,b; 如果a查询一次, 紧接着b更新一次, 然后此时a再次查询,是不是查询到的还是老数据

是,这个叫‘可重复读’。

所以是不是我对SqlSession理解不到位? 如果两个用户并发在接口上请求, 是不是大概率不在一个SqlSession上? 如果是, 那会不会出现脏读问题?

不是大概率不在,是不可能在(除非真的自己写了一套奇怪的逻辑,多个请求能访问到同一个 session…),所以也不存在脏读

通常来说,每个请求独享一个数据库连接,一个 sql session,一个事务上下文

以上是 如何理解mybatis的一级缓存?会不会造成数据不一致的问题? 的全部内容, 来源链接: utcz.com/p/945416.html

回到顶部