spring中用事务

我的名字叫李猜 发布于 2016/09/28 11:35
阅读 466
收藏 0

在使用mybatis 中有sql语句的插入调用,又有存储过程的调用.怎么控制事务?

在存储过程的调用后出现异常 怎么进行回滚?

加载中
0
我的名字叫李猜
我的名字叫李猜
没人回答么???????
1
魔力猫
魔力猫
对于SPring来说,只要事务管理配置正常,能够捕获runtimeexception,就可以自动回滚。如果存储过程里面有独立事务,那要看存储过程自己处理了。
高山流水情
高山流水情
我也觉得是这样的。 如果存储过程中没有事务,从spring开启事务,执行inset,执行存储过程,到关闭事务,应该用的是同一个链接,可以保证事务。 如果存储过程中有事务,那和spring开启的肯定不是同一个事物,不能保证事务。
1
草的高度
草的高度

既然用上了存储过程,事务应该是写进里面,所以java代码就不必担心如何控制事务了。

对于多个增删改组成的事务,最好是用声明式事务来控制,在需要事务控制的业务逻辑方法上加上@Transactional

0
羅志林
Spring对声明式事务的支持是通过使用Spring AOP框架来实现的,主要有以tx命名空间和@Transactional的声明方式。

一:@Transactional

<tx:annotation-driven transaction-manager="transactionManager"/>

<tx:annotation-driven>元素告诉Spring检查上下文中所有使用@Transactional的Bean,对于每个使用@Transactional的Bean,<tx:annotation-driven>会自动为它添加事务

 

二:<tx:advice>

<tx:advice id="txAdvice" transaction-manager="transactionManager">  <tx:attributes>  <tx:method name="save*" propagation="REQUIRED"/>  <tx:method name="insert*" propagation="REQUIRED"/>  <tx:method name="add*" propagation="REQUIRED"/>  <tx:method name="update*" propagation="REQUIRED"/>  <tx:method name="delete*" propagation="REQUIRED"/>  <tx:method name="remove*" propagation="REQUIRED"/>  <tx:method name="accept*" propagation="REQUIRED"/>  <tx:method name="reject*" propagation="REQUIRED"/>  <tx:method name="execute*" propagation="REQUIRED"/>  <tx:method name="del*" propagation="REQUIRED"/>  <tx:method name="recover*" propagation="REQUIRED"/>  <tx:method name="sync*" propagation="REQUIRED"/>  <tx:method name="batch*" propagation="REQUIRED"/>  <tx:method name="complete*" propagation="REQUIRED"/>  <!--<tx:method name="*" read-only="true"/>-->  </tx:attributes> </tx:advice>
0
羅志林

引用来自“羅志林”的评论

Spring对声明式事务的支持是通过使用Spring AOP框架来实现的,主要有以tx命名空间和@Transactional的声明方式。

一:@Transactional

<tx:annotation-driven transaction-manager="transactionManager"/>

<tx:annotation-driven>元素告诉Spring检查上下文中所有使用@Transactional的Bean,对于每个使用@Transactional的Bean,<tx:annotation-driven>会自动为它添加事务

 

二:<tx:advice>

<tx:advice id="txAdvice" transaction-manager="transactionManager">  <tx:attributes>  <tx:method name="save*" propagation="REQUIRED"/>  <tx:method name="insert*" propagation="REQUIRED"/>  <tx:method name="add*" propagation="REQUIRED"/>  <tx:method name="update*" propagation="REQUIRED"/>  <tx:method name="delete*" propagation="REQUIRED"/>  <tx:method name="remove*" propagation="REQUIRED"/>  <tx:method name="accept*" propagation="REQUIRED"/>  <tx:method name="reject*" propagation="REQUIRED"/>  <tx:method name="execute*" propagation="REQUIRED"/>  <tx:method name="del*" propagation="REQUIRED"/>  <tx:method name="recover*" propagation="REQUIRED"/>  <tx:method name="sync*" propagation="REQUIRED"/>  <tx:method name="batch*" propagation="REQUIRED"/>  <tx:method name="complete*" propagation="REQUIRED"/>  <!--<tx:method name="*" read-only="true"/>-->  </tx:attributes> </tx:advice>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
 <tx:attributes>
 <tx:method name="save*" propagation="REQUIRED"/>
 <!--<tx:method name="*" read-only="true"/>-->
 </tx:attributes>
</tx:advice>

返回顶部
顶部