【发布时间】:2017-10-26 16:44:41
【问题描述】:
假设我有两个事务,内部事务传播是 REQUIRES_NEW。
所以,第一个事务在事务 X 上运行,第二个事务创建一个新事务。并假设如果内部事务失败,外部事务是否也会失败?或者只有内部事务只会失败,使外部事务成功。
谁能解释一下上述场景中的行为?
赞赏!!!
【问题讨论】:
标签: java spring hibernate spring-transactions
假设我有两个事务,内部事务传播是 REQUIRES_NEW。
所以,第一个事务在事务 X 上运行,第二个事务创建一个新事务。并假设如果内部事务失败,外部事务是否也会失败?或者只有内部事务只会失败,使外部事务成功。
谁能解释一下上述场景中的行为?
赞赏!!!
【问题讨论】:
标签: java spring hibernate spring-transactions
它们是单独的事务(外部事务在内部运行时暂停),而不是嵌套事务。如果内部事务失败,则回滚。如果您抑制该异常,您仍然可以让外部事务成功,如果您选择这样做。
【讨论】:
catch(Exception),在正常情况下,两个事务都会失败。尽管如此,您仍然可以轻松捕获异常,例如在失败时重试(并且重试是有意义的)。
@Transactional 注解中配置哪些异常会导致回滚,或者自己捕获异常而不让它们传播。