最近想搭个spring框架,可中间涉及到事务。因为数据层会用到ibatis或者hibernate 所以没有用最原始的jdbc来管理事务,网上找了下一般都用spring Aop来管理事务,配置挺方面的,以下是事务配置的几种方式,希望能帮到初学者,我也刚接触有好的建议提出来。
一 transactionTemplate; 来管理事务 。它主要是通过配置来实例化一个transactionTemplate对象。然后在需要用到事务的地方进行事务处理,配置稍简单
< xml version="1.0" encoding="UTF-8" >
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
default-autowire="byName">
package com.action;
import java.util.List;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
import com.dao.BaseDao;
import com.vo.Emp;
public class MyAction {
private Emp emp;
private TransactionTemplate transactionTemplate;
public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
this.transactionTemplate = transactionTemplate;
}
public String insertEmp() {
transactionTemplate.execute(new TransactionCallback
public Object doInTransaction(TransactionStatus arg0) {
// TODO Auto-generated method stub
try{
dao.insert("emp.insert", emp);
Integer.parseInt("sdsdd");
}catch(Exception e){
System.out.println("taijiadjjdkljdklj");
arg0.setRollbackOnly();
}
return 0;
}
});
return "ok";
}
}
在添加时处理事务,抛出一个异常,结果添加数据回滚!验证成功
二 TransactionAspectSupport 得到当前的transaction来进行事务操作,操作简便,在catch处进行事务回滚.
代码如下:
< xml version="1.0" encoding="UTF-8" >
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.