@Transactional 的“REQUIRES_NEW”传播属性的实际用例是什么

Van*_*hah 3 java spring hibernate transactions spring-boot

我是学习 Spring Boot 的新手。我想知道 @Transactional 注释的传播属性中 REQUIRES_NEW 的实际用例是什么。

我知道,如果新事务的请求到达,它会暂停正在进行的事务,然后在完成新请求的事务后恢复。

Les*_*iak 6

我认为理解交易陷阱文章很好地解释了这一点:

仅当正在调用的方法中的数据库操作需要保存到数据库时(无论覆盖事务的结果如何),才应使用 REQUIRES_NEW 事务属性。例如,假设尝试的每笔股票交易都必须记录在审计数据库中。无论交易是否因验证错误、资金不足或其他原因而失败,都需要保留此信息。如果您没有在审核方法上使用 REQUIRES_NEW 属性,审核记录将与尝试的交易一起回滚。使用 REQUIRES_NEW 属性可以保证无论初始事务的结果如何,都会保存审计数据。