spring 使用 jdbcTemplates 使用 @Transaction 注释进行事务回滚

spring transaction rollback with @Transaction annotation using jdbcTemplates

这是我使用 JdbcTemplate 的示例。由于 runTimeException,我的问题 doMultipleCalls() 在第 3 步失败,所有内容都会回滚吗? 我只有 doMultipleCalls@Transactional 注释,其他人没有。是否在所有这些人之间共享相同的交易会话?如果不是如何传递相同的交易会话?

@Component
public class MyRespository {

@Autowired
JdbcTemplate template

@Transactional
public void doMutlipleCalls() {
   callUpdate(); //1
   callInsert(); //2
   callDelete(); //3
}

callUpdate() {
  template.query(...)
}

callInsert() {
   template.query(...)
} 

callDelete() {
   template.query(..)
}

}

Is the same transaction session shared across all of them?

是的。事务在进入 doMultipleCalls() 方法之前开始,一旦进入 returns.

就完成

当您将 spring jdbc 与事务一起使用时,它的行为方式与对 jpa 的行为方式相同。您的操作包含在同一笔交易中。

检查此 article