解决@Aysc和@Transactional所带来的事务问题(主线程事务插入,异步查询不到该数据的问题)

文章讨论了在测试类中异步调用时遇到的问题,即事务隔离级别导致数据不一致。解决方案提出调整隔离级别以读取未提交数据,但强调这可能导致脏数据问题。作者分享了实际业务中通过主键ID避免脏数据的处理策略。
摘要由CSDN通过智能技术生成

记录业务中所发现的问题,并且通过事务隔离级别的方式解决

具体问题描述:
测试类(调用方):

在这里插入图片描述

异步类(被调用方):

在这里插入图片描述
根据上述的操作,我先是在调用方中插入了一条数据,然后调用了异步方法去查询(查询刚才名叫张三的数据),但是等待阻塞获取之后,查询的结果为null并没有查询到,这是因为被调用方的事务和调用方并不是同一个事物,在调用方还未提交的时候,其他事物自然是查询不到的.

解决方案:

这里最简单的方案其实就是直接修改被调用方的事务隔离级别,让他可以读取到其他事物还没有提交的数据,具体修改如下图:
在这里插入图片描述

但是在大多数业务中可能并不适用,因为这种方式很容易出现读取到不该处理的脏数据!!!
但是在大多数业务中可能并不适用,因为这种方式很容易出现读取到不该处理的脏数据!!!
但是在大多数业务中可能并不适用,因为这种方式很容易出现读取到不该处理的脏数据!!!
重要的事情说三遍!

我在实际业务中,是类似于插入了之后是拿着返回的主键id去异步查询的所以并不存在读取到脏数据的情况.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值