DataSourceTransactionManager 的事務(wù)和JdbcTemplate的關(guān)系
當(dāng)使用了DataSourceTransactionManager后,使用同一個(gè)DataSource的JdbcTemplate也在事務(wù)中了嗎?
還是使用了從這個(gè)dataSourceTransactionManager.getDataSource()的jdbcTemplate才在事務(wù)里?不明白。
???/**
?????*?在同一事務(wù)中執(zhí)行,當(dāng)拋出異常時(shí)會自動(dòng)回滾事務(wù),操作成功后自動(dòng)提交事務(wù)
?????*/
????public?int[]?batchExc(final?List?lists)?{
????????//這個(gè)txManager是DataSourceTransactionManager
????????TransactionTemplate?tt?=?new?TransactionTemplate(txManager);
????????return?(int[])?tt.execute(
????????????????new?TransactionCallback()?{
????????????????????public?Object?doInTransaction(TransactionStatus?status)?{
????????????????????????if?(!lists.isEmpty())?{
????????????????????????????log.info("?===?開始事務(wù)?===?");
????????????????????????????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("?===?結(jié)束事務(wù)?===?");
????????????????????????????//這個(gè)jdbcTemplate不用設(shè)置DataSource就可以實(shí)現(xiàn)在事務(wù)中
????????????????????????????return?jdbcTemplate.getJdbcOperations().batchUpdate(sqls);
????????????????????????}?else?{
????????????????????????????return?new?int[0];
????????????????????????}
????????????????????}
????????????????});
????}
繼續(xù)跟蹤。。。
還是使用了從這個(gè)dataSourceTransactionManager.getDataSource()的jdbcTemplate才在事務(wù)里?不明白。
???/**
?????*?在同一事務(wù)中執(zhí)行,當(dāng)拋出異常時(shí)會自動(dòng)回滾事務(wù),操作成功后自動(dòng)提交事務(wù)
?????*/
????public?int[]?batchExc(final?List?lists)?{
????????//這個(gè)txManager是DataSourceTransactionManager
????????TransactionTemplate?tt?=?new?TransactionTemplate(txManager);
????????return?(int[])?tt.execute(
????????????????new?TransactionCallback()?{
????????????????????public?Object?doInTransaction(TransactionStatus?status)?{
????????????????????????if?(!lists.isEmpty())?{
????????????????????????????log.info("?===?開始事務(wù)?===?");
????????????????????????????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("?===?結(jié)束事務(wù)?===?");
????????????????????????????//這個(gè)jdbcTemplate不用設(shè)置DataSource就可以實(shí)現(xiàn)在事務(wù)中
????????????????????????????return?jdbcTemplate.getJdbcOperations().batchUpdate(sqls);
????????????????????????}?else?{
????????????????????????????return?new?int[0];
????????????????????????}
????????????????????}
????????????????});
????}
繼續(xù)跟蹤。。。
Powered by ScribeFire.