事务问题

事务问题

我想知道 spring中自带 @Transactional 注解

即该方法中 的 所有 sql 操作都处于统一个事务,那么 有操作失效就会统一回滚


在分库分表的情况下 

我如果 用@Transactional 包裹一个方法

即使这个 方法 中 的sql 涉及 多个 服务器数据库 的操作

那么 不也应该  其他的一同回滚吗


即我的意思是想表达 @Transactional 为什么不能起到 分布式事务的作用呢


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2021-09-22 13:12:07

同学你好,单块系统是运行在同一个 JVM 进程中的,但是分布式系统中的各个系统运行在各自的 JVM 进程中。但因为@Transactional 注解只能控制同一个 JVM 进程中的事务,对于这种跨多个 JVM 进程的事务无能无力。所以无法通过@Transactional 注解处理分布式的事务。

祝学习愉快!

  • 提问者 qq_精慕门6417434 #1

    比如说 

    @Transactional

     方法{

      mapper.insert(user1);

     mapper.insert(user2);

    }

    然后 配置了分库分表,偶数 userId到 服务器1的数据库

    奇数到 服务器 2

    现在 这两个 insert 就会 分别 插入 不同服务器的数据库

    那现在这个 transactional起什么作用呢

    能否 在失败的时候 一起回滚这两个 insert 

    2021-09-22 13:15:59
  • 同学你好,在同一个事务中,不能操作多个数据库。所以同学反馈的代码是无法进行回滚的。

    祝学习愉快!

    2021-09-22 16:09:44
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师