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

时间:2017-02-08 17:54:52

标签: spring-boot spring-data-jpa jdbctemplate spring-transactions

以下是我使用JdbcTemplate的示例。由于runTimeException,我的问题doMultipleCalls()在步骤3失败,一切都会回滚。 我@Transactional仅对doMultipleCalls进行注释,但对其他人进行注释。是否在所有这些事务中共享相同的事务会话?如果不是如何跨越同一个交易会话?

@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(..)
}

}

2 个答案:

答案 0 :(得分:1)

  

是否在所有这些事务中共享相同的事务会话?

是。该事务在输入doMultipleCalls()方法之前开始,并在返回后完成。

答案 1 :(得分:1)

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

选中article