Spring 提供两种事务处理方式,一种是编程式事务处理;一种是声明式事务处理。如果需要大量的事务处理,就用声明式事务处理,如果很少的事务处理,就用编程式。
编程式事务:
使用TransactionTemplate进行事务处理(Spring进行commit和rollback),原型定义如下:
public class TransactionTemplate extends DefaultTransactionDefinition implements InitializingBean {
public Object execute(TransactionCallback action) throws TransactionException {
if (this.transactionManager instanceof CallbackPreferringPlatformTransactionManager) {
return ((CallbackPreferringPlatformTransactionManager) this.transactionManager).execute(this, action);
}
else {
TransactionStatus status = this.transactionManager.getTransaction(this);
Object result = null;
try {
// 参数TransactionCallback 是一个接口,接口中定义了doInTransaction方法
// 只要实现TransactionCallback接口,在doInTransaction()方法里编写具体要进行事务处理的代码即可。
result = action.doInTransaction(status);
}
catch (RuntimeException ex) {
// 回滚事务
rollbackOnException(status, ex);
throw ex;
}
catch (Error err) {
// 回滚事务
rollbackOnException(status, err);
throw err;
}
this.transactionManager.commit(status);
return result;
}
}
}
实现TransactionCallback接口。
transactionTemplate.execute(
new TransactionCallback() {
public Object doInTransaction(TransactionStatus ts) {
//代码实现.
}
}
}
配置文件定义:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="myDataSource" />
</property>
</bean>
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
</bean>
posted on 2008-07-28 14:37
josson 阅读(1089)
评论(0) 编辑 收藏 所属分类:
Spring