【发布时间】:2019-12-03 02:48:12
【问题描述】:
所以我最初发布了一个问题here,关于我在混合 JDBC 模板/JPA 时遇到的问题。
但是我现在想知道是否可以在 JDBC 模板操作之间共享一个公共事务?
示例将在单独的事务中更新表“测试”。
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void storeDataInSingleTransaction(List<Test> testEntries) {
namedParameterJdbcTemplate.update("DELETE FROM test", new HashMap<>());
namedParameterJdbcTemplate.update("alter table test auto_increment = 1", new HashMap<>());
String insertTestSQL = "INSERT INTO test VALUES (:id, :name, :value)";
SqlParameterSource[] testBatch = SqlParameterSourceUtils.createBatch(testEntries.toArray());
namedParameterJdbcTemplate.batchUpdate(insertTestSQL, testBatch);
}
编辑 1:我尝试使用 Transactional 注释手动创建模板/数据源,但对我来说没有成功。
SingleConnectionDataSource dataSource = new SingleConnectionDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
【问题讨论】:
-
您需要在实际应用程序流程中更改表吗?为什么会实时更改多次?是测试吗?
-
该示例是一个测试,但在实际用例中我确实需要上述内容。表中的数据需要在用户操作期间完全刷新。仍然可以搜索有问题的表,因此刷新需要在单个事务中进行
标签: java spring-boot jdbc jdbctemplate spring-transactions