spring 事务处理

linpyi 2010-08-18 04:17:28
采用spring 的AOP来托管事务

现在有以下步骤
1.update语句
2.调用某存储过程
3.update语句

现在在3执行错误后,2的存储过程已经把前面的事务commit了,导致错误.

有没什么办法单独存储过程的事务,或者其他解决方法

...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linpyi 2010-08-19
  • 打赏
  • 举报
回复
嵌套对于存储过程显示的commit好象没什么作用
jiazimo 2010-08-19
  • 打赏
  • 举报
回复
交给spring 管理,只有RuntimeException它才回滚,不太会...学习..
qunhao 2010-08-19
  • 打赏
  • 举报
回复
你可以配置一下事务的管理策略,下面是我的整理资料你可以看一下。

<!-- 配置事务管理策略 -->
<tx:advice id="txAdvice" transaction-manager="myHibTxManager">
<tx:attributes>
<!-- 配置不同的方法使用不同的事务 -->
<tx:method name="to*" propagation="SUPPORTS" read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>

<tx:method>该标签的属性:
name:指定要使用事务的方法名,支持通配符。如 to*
propagation:该属性有如下值:
REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER 以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
read-only:为true表示只读事务,就是说执行查询的方法,不会对数据造成影响。
刘二傻 2010-08-19
  • 打赏
  • 举报
回复
使用JDBC的事物
很久以前飞 2010-08-19
  • 打赏
  • 举报
回复
如何看spring中事务回滚的原因。。。
cooljia 2010-08-19
  • 打赏
  • 举报
回复
在你的存储过程中不要加入事务控制语句,事务控制全部交给spring来做
  • 打赏
  • 举报
回复
Spring提供了事务嵌套的解决方案

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧