逝者如斯夫

静而思之
数据加载中……

DataSourceTransactionManager 的事务和JdbcTemplate的关系

当使用了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.

posted on 2007-11-29 18:02 ideame 阅读(6123) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: