关闭

spring的事务管理问题

256人阅读 评论(0) 收藏 举报
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或它的子类,事务仍将会提交。

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:109705次
    • 积分:1427
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:116篇
    • 译文:0篇
    • 评论:18条
    最新评论