当使用了DataSourceTransactionManager后,使用同一个DataSource的JdbcTemplate也在事务中了吗?
还是使用了从这个dataSourceTransactionManager.getDataSource()的jdbcTemplate才在事务里?不明白。
/**
* 在同一事务中执行,当抛出异常时会自动回滚事务,操作成功后自动提交事务
*/
public int[] batchExc(final List lists) {
//这个txManager是DataSourceTransactionManager
TransactionTemplate tt = new TransactionTemplate(txManager);
return (int[]) tt.execute(
new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
if (!lists.isEmpty()) {
log.info(" === 开始事务 === ");
String[] sqls = new String[lists.size() - 1];
for (int i = 0; i < lists.size(); i++) {
sqls[i] = (String) lists.get(i);
log.info(sqls[i]);
}
log.info(" === 结束事务 === ");
//这个jdbcTemplate不用设置DataSource就可以实现在事务中
return jdbcTemplate.getJdbcOperations().batchUpdate(sqls);
} else {
return new int[0];
}
}
});
}
继续跟踪。。。
Powered by ScribeFire.