xxxatt的专栏

要活的好像明天就要死去一样!

spring的事务管理问题

public   interface  Bar 
2     public   void  foo(); 
3     public   void  saveToDB(); 
4 }
 

 1 public  BarImpl  implements  Bar 
 2    public   void  foo() 
 3     saveToDB(); 
 4      
 5      if (
 6        throw   new  RuntimeException(); 
 7     }
 
 8     
 9    }

10
11     public   void  saveToDB()
12        //  数据库存储操作 
13       
14    }
 
15 }

如果foo方法结束前抛出异常,则saveToDB方法中所作的数据库修改也无效了 我的目的是:不管foo是否抛出异常,如果saveToDB成功执行后,则数据库也要有相应的修改 请问应该怎么配置啊?

我的配置:
1<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> 
2<property name="transactionManager" ref="transactionManager"/> 
3<property name="transactionAttributes"> 
4<props> 
5  <prop key="save*">PROPAGATION_REQUIRED</prop> 
6  <prop key="foo*">PROPAGATION_REQUIRED</prop> 
7</props> 
8</property> 
9</bean>

-------------------------------------------------------------------------------------------------------------------
默认的情况下,spring只有当unchecked exception被抛出时,才rollback事务。

1<property name="transactionAttributes"> 
2        <props> 
3            <prop key="insert*">PROPAGATION_REQUIRED,-MyCheckedException,+MyUnCheckedException</prop> 
4            <prop key="update*">PROPAGATION_REQUIRED</prop> 
5            <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> 
6        </props> 
7    </property> 
8

-MyCheckedException 指定如果方法抛出MyCheckedException或它的子类,事务将 会自动回滚。
+MyUnCheckedException 指定如果方法抛出MyUnCheckedException或它的子类,事务仍将会提交。

 
阅读更多
个人分类: spring框架相关
上一篇理解Spring
下一篇Hibernate/Spring/Struts架构使用OpenSessionInView的问题
想对作者说点什么? 我来说一句

spring 事务(6中配置完全降解)

2011年04月28日 131KB 下载

spring\spring事务详解

2011年11月01日 115KB 下载

Spring 事务配置

2011年07月20日 3KB 下载

spring学习事务源码

2018年06月02日 5.97MB 下载

Spring事务流程图

2018年06月04日 327KB 下载

spring 事务配置

2011年10月15日 9KB 下载

没有更多推荐了,返回首页

关闭
关闭