@Transactional是否支持NamedParameterTemplate.batchUpdate

时间:2019-06-18 17:37:55

标签: java spring spring-boot transactions batch-updates

@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

}

1 个答案:

答案 0 :(得分:2)

NamedParameterTemplate只是Jdbc的抽象。在春季,由事务管理器负责管理事务,不是说您不能通过普通JDBC来完成事务,但这是春季的方法。 Spring使用内部AOP来检查带注释的方法,并委派其事务管理。但是此角色与NamedParameterTemplate分开。

因此,只要它们在使用@Transactional的Spring托管组件/ bean中,您就可以自由使用它并为方法添加注释