模型服务连接失败

REQUIRES_NEW 和 NESTED 的区别是什么?

并发Java
分类
数据库
难度
未设置
来源数
1
更新时间
2026/03/29 15:43

答案

+ REQUIRES_NEW如果B(第二个事务)正常执行,则B中的数据在A(外部事务)提交之前已经完成提交,其他线程已经可见其修改,这就意味着可能有脏数据的产生;同时,如果接下来A的其他逻辑发生了异常,A回滚,但是B已经完成提交,不会回滚了。当然,如果A接下来的逻辑没有相关要求,那就无所谓了 + NESTED如果B(内嵌事务)正常执行,此时B中的修改并不会立即提交,而是在A(外部事务)提交时一并提交,如果A下面的逻辑中发生异常,A回滚时,B中的修改也会回滚,就可以避免上述情况的发生

元信息

审核状态: active
关联来源: 1

来源面经题(0)

这道题目前没有手动沉淀的面经题来源。

来源(1)

Java八股(框架).md

knowledge_note
Question 34: REQUIRES_NEW 和 NESTED 的区别是什么? Source answer: + REQUIRES_NEW如果B(第二个事务)正常执行,则B中的数据在A(外部事务)提交之前已经完成提交,其他线程已经可见其修改,这就意味着可能有脏数据的产生;同时,如果接下来A的其他逻辑发生了异常,A回滚,但是B已经完成提交,不会回滚了。当然,如果A接下来的逻辑没有相关要求,那就无所谓了 + NESTED如果B(内嵌事务)正常执行,此时B中的修改并不会立即提交,而是在A(外部事务)提交时一并提交,如果A下面的逻辑中发生异常,A回滚时,B中的修改也会回滚,就可以避免上述情况的发生 Reviewed answer: REQUIRES_NEW 会挂起外部事务并开启新事务,内部事务可独立提交回滚;NESTED 依赖外部事务,通常基于保存点,内部提交不会真正独立提交,外部回滚时内部也会回滚。