JdbcTemplate采用默认的jdbc autoCommit模式。不具有原子属性。
例1:
JdbcTemplate jt=new JdbcTemplate(datasource) jt.update("insert into table1 values(1,2)");.........................1 jt.update("insert into table1 values(2,3,3)");......................2 实例中2处出现错误,由于jdbctemplate事物自动提交。不具有原子属性。所以,即使2处有错误,1处 的数据仍然能够正常插入。 如何对jdbctemplate增加原子属性呢? 例2: DataSourceTransactionManager transactionManager =new DataSourceTransactionManager(ds);DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
jdbcTemplate.update("INSERT INTO t1 VALUES(1,3)");
jdbcTemplate.update("INSERT INTO t1 VALUES(2,3)"); 。。。。。。。3
transactionManager.commit(status);..................................4 对示例1中增加如实例2中的代码,即可对事物增加了原子属性。transactionmanager不会自动提交。需要增加4处代码。另外,如果3处出现异常,事物将不被commit,自动抛出异常。