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。
这是我使用 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。