使用Springjdbc模板调用多个过程实现交易

Achieving transaction by calling multiple procedures using Spring jdbc template

我有一个 scanario,我必须在其中调用多个存储过程。如果任何一个存储过程失败,我必须回滚所有过程。

请问如何使用 spring jdbc 模板实现此目的。我所知道的是,我只能使用 spring jdbc 模板调用一个存储过程。

有什么方法可以使用 spring jdbc 模板依次调用一组过程?

解决此问题的一种方法是创建另一个新的存储过程并调用其中的所有过程。

还有其他有效的方法吗?

以下代码将在同一个事务中调用多个存储过程。

@Transactional(rollbackFor=Exception.class)
public void callStoredProcedures(){
   // Stored procedure 1
   //....
   // Stored procedure n
}

事务将在方法开始时初始化。该方法中的所有后续数据库调用都将参与此事务,方法上下文中的任何异常都将回滚事务。

请注意,此方法的事务回滚是为任何 Exception 配置的。默认情况下,事务被标记为在 RuntimeExceptionJdbcTemplate 方法抛出 DataAccessException 类型的异常时回滚,这是它的子类。如果检查异常不需要回滚,则可以删除 (rollbackFor=Exception.class)

此外,要使 @Transactional 注释起作用,请启用事务管理。请通过 @EnableTransactionManagement