@Transactional 是否支持 NamedParameterTemplate.batchUpdate

Is @Transactional support for NamedParameterTemplate.batchUpdate

@Transactional 是否支持 NamedParameterTemplate.batchUpdate? 如果在批量执行过程中出现问题,是否会按预期回滚?就个人而言,我没有经历过。这就是我问的原因。 有没有文档可以检查@Transactional支持的方法。

public class JdbcActorDao implements ActorDao {

private NamedParameterTemplate namedParameterJdbcTemplate;

public void setDataSource(DataSource dataSource) {
    this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}

@Transactional
public int[] batchUpdate(List<Actor> actors) {
    return this.namedParameterJdbcTemplate.batchUpdate(
            "update t_actor set first_name = :firstName, last_name = :lastName where id = :id",
            SqlParameterSourceUtils.createBatch(actors));
}

// ... additional methods

}

NamedParameterTemplate 只是围绕 Jdbc 的抽象。在 spring 中,事务管理器负责管理事务,并不是说你不能通过普通的 JDBC 来做到这一点,但这是 spring 的方式。 Spring 在内部使用 AOP 检查带注释的方法并委托其事务管理。但此角色与 NamedParameterTemplate 是分开的。

因此您可以自由使用它并注释您的方法,只要它们在 Spring 管理的 component/bean 中并带有 @Transactional