2026-05-09-事务
事务的概念和事务的隔离级别都是在 MySQL事务 这个章节里面讲述了,这里就不详细讲了
事务传播机制
在 MySQL 中是没有这个概念的,因为 MySQL 貌似不存在方法之间的调用,也就不存在事务之间的调用了
在 Java 中,它们的类型是存在 Propagation 这个枚举类里面
| 类型 | 含义 |
|---|---|
REQUIRE | 需要事务,如果没有事务,那么就创建一个,如果有事务,那么就不创建,使用之前的事务,这个是 Java 默认的类型 |
SUPPORTS | 如果有事务,那么就使用事务,如果没有,那么就不使用事务,处于“摆烂”状态 |
MANDATORY | 必须有事务,没有事务就会抛异常 |
REQUIRE_NEW | 会重新创建一个事务 |
NOT_SUPPORTED | 不需要有事务 |
NEVER | 不能有事务,有事务就抛异常 |
NESTED | 事务嵌入,事务回滚只会回滚当前的事务,不会影响其他 |
问题
NESTED 和 REQUIRE 区别
NESTED 和 REQUIRE 的区别是在事务的回滚上
NESTED:如果主动执行事务回滚,只会影响当前的事务,不会影响到其他的事务REQUIRE:它是所有的事务合并一个,因此如果这个执行回滚,其他所有的方法都会回滚
如果是被动回滚,比如异常没处理,那么它们都是一样的,全部都会回滚