@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
}
答案 0 :(得分:2)
NamedParameterTemplate只是Jdbc的抽象。在春季,由事务管理器负责管理事务,不是说您不能通过普通JDBC来完成事务,但这是春季的方法。 Spring使用内部AOP来检查带注释的方法,并委派其事务管理。但是此角色与NamedParameterTemplate分开。
因此,只要它们在使用@Transactional的Spring托管组件/ bean中,您就可以自由使用它并为方法添加注释