spring 事务配置 (一)

2014-11-24 11:30:13 · 作者: · 浏览: 20

最近想搭个spring框架,可中间涉及到事务。因为数据层会用到ibatis或者hibernate 所以没有用最原始的jdbc来管理事务,网上找了下一般都用spring Aop来管理事务,配置挺方面的,以下是事务配置的几种方式,希望能帮到初学者,我也刚接触有好的建议提出来。

一 transactionTemplate; 来管理事务 。它主要是通过配置来实例化一个transactionTemplate对象。然后在需要用到事务的地方进行事务处理,配置稍简单

< xml version="1.0" encoding="UTF-8" >
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
default-autowire="byName">

class="org.springframework.jdbc.datasource.DriverManagerDataSource">
value="com.mysql.jdbc.Driver">

value="jdbc:mysql://localhost:3306/test characterEncoding=UTF-8">



class="org.springframework.jdbc.datasource.DataSourceTransactionManager">




class="org.springframework.transaction.support.TransactionTemplate">




class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
value="classpath:sqlmapconfig.xml">













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:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.