编程式事务(TransactionTemplate & PlatformTransactionManager)

David 2022-11-28 17:04:12
Categories: Tags:

 

 

 

 

 

使用TransactionTemplate


​​​​​​​

示例

TransactionTemplate tt = new TransactionTemplate(); // 新建一个TransactionTemplate

Object result = tt.execute(        

    newTransactionCallback(){

            publicObject doTransaction(TransactionStatus status)    {

                updateOperation();

                returnresultOfUpdateOperation();

            }

}); // 执行execute方法进行事务管理

 

 

 

 

使用PlatformTransactionManager

示例

DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); //定义一个某个框架平台的TransactionManager,如JDBCHibernate

dataSourceTransactionManager.setDataSource(this.getJdbcTemplate().getDataSource()); // 设置数据源

DefaultTransactionDefinition transDef = new DefaultTransactionDefinition(); // 定义事务属性

transDef.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRED); // 设置传播行为属性

TransactionStatus status = dataSourceTransactionManager.getTransaction(transDef); // 获得事务状态

try{

    // 数据库操作

    dataSourceTransactionManager.commit(status);// 提交

}

catch (Exception e)

{

    dataSourceTransactionManager.rollback(status);// 回滚

}