Skip to content

2026-05-09-事务 ​

事务的概念和事务的隔离级别都是在 MySQL事务 这个章节里面讲述了,这里就不详细讲了

事务传播机制 ​

在 MySQL 中是没有这个概念的,因为 MySQL 貌似不存在方法之间的调用,也就不存在事务之间的调用了

在 Java 中,它们的类型是存在 Propagation 这个枚举类里面

类型含义
REQUIRE需要事务,如果没有事务,那么就创建一个,如果有事务,那么就不创建,使用之前的事务,这个是 Java 默认的类型
SUPPORTS如果有事务,那么就使用事务,如果没有,那么就不使用事务,处于“摆烂”状态
MANDATORY必须有事务,没有事务就会抛异常
REQUIRE_NEW会重新创建一个事务
NOT_SUPPORTED不需要有事务
NEVER不能有事务,有事务就抛异常
NESTED事务嵌入,事务回滚只会回滚当前的事务,不会影响其他

问题 ​

NESTED 和 REQUIRE 区别 ​

NESTED 和 REQUIRE 的区别是在事务的回滚上

  • NESTED:如果主动执行事务回滚,只会影响当前的事务,不会影响到其他的事务
  • REQUIRE:它是所有的事务合并一个,因此如果这个执行回滚,其他所有的方法都会回滚

如果是被动回滚,比如异常没处理,那么它们都是一样的,全部都会回滚