Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是对NamedParameterTemplate.batchUpdate的@Transactional支持_Java_Spring_Spring Boot_Transactions_Batch Updates - Fatal编程技术网

Java 是对NamedParameterTemplate.batchUpdate的@Transactional支持

Java 是对NamedParameterTemplate.batchUpdate的@Transactional支持,java,spring,spring-boot,transactions,batch-updates,Java,Spring,Spring Boot,Transactions,Batch Updates,@Transactional是否支持NamedParameterTemplate.batchUpdate? 如果批处理执行过程中出现问题,它是否会按预期回滚?就我个人而言,我没有这方面的经验。这就是我问的原因。 是否有任何文档需要检查@Transactional支持的方法 public class JdbcActorDao implements ActorDao { private NamedParameterTemplate namedParameterJdbcTemplate; publ

@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
公共类JdbcActorDao实现ActorDao{
私有名称ParameterTemplate名称ParameterJDBCTemplate;
public void setDataSource(数据源数据源){
this.namedParameterJdbcTemplate=新的namedParameterJdbcTemplate(数据源);
}
@交易的
public int[]批更新(列出参与者){
返回此.namedParameterJdbcTemplate.batchUpdate(
“更新t_actor set first_name=:firstName,last_name=:lastName,其中id=:id”,
SqlParameterSourceUtils.createBatch(actors));
}
//…其他方法

}

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


因此,您可以自由地使用它并使用@Transactional注释您的方法,只要它们在Spring管理的组件/bean中,无论您使用批处理更新还是简单更新,这些更新都会在事务期间发生,回滚事务将回滚更新。如果有疑问,你为什么不测试一下呢?我测试过了。它不起作用。这就是我提问的原因。我无法找到适当的文档来验证事务注释支持哪些方法。然后在您的问题中提问。演示如何获得DAO实例以及如何调用其方法。