SSH2的事务的问题?

5 | 守望幸福 |浏览2105次
收藏|2012/08/07 12:46

SSH2的事务问题
把hibernate交给spring托管,在service一个方法里要保存(或其他操作比如删除,更新)两个(甚至多个)对象,如果其中任何一个操作出现异常,则全部回滚。。这其实是一个老生常谈的问题,不需要我过多描述,都能明白我的意思吧?但是我没写过。。求高人指点,最好贴代码啊大虾。。。
   

回答该问题即可获得 2 经验值,问题被采纳即可获得 2 经验值 + 5 财富值!
我来回答

验证码

  换一个
全部回答(2)
  • 1、我感觉也无什么问题
    但你的service层有做代码异常处理,是spring捕获不了,默认只对unchecked exception异常做处理,你在配置文件中该的试下
    <tx:method name="save*" propagation="REQUIRED" rollback-for="Throwable"/>

    2。你用的是mysql吗? 用工具看嘛,设计表,在选项那里有引擎,如果你是用sql创建表的,在后面有没有加上Engine 的话, mysql默认会采用 Sam 引擎,他是不支持事务的。具体的,你可以去Google。

    回答于 2012/08/07 12:49
  • 伪代码:

    service 方法:
    void 注册新生() {
    添加新生基本信息();//这是对新生表的一个添加操作
    添加新生班级信息();//这是对新生班级表的添加操作
    添加学生交费信息();//这是对学生交费表的添加操作
    更新班级信息();//这是对班级表的更新操作
    }

    在以上的4个方法中,比如最后一个方法《更新班级信息》方法中出现了异常,即报错,那么在之前的
    《添加新生基本信息》,《添加新生班级信息》,《添加学生交费信息》里添加的数据都会回滚,即相当于没有添加过数据一样。

    这就是事务回滚,一句话,要么全部成功,要么全部失败。

    回答于 2012/08/07 12:48
0人关注该问题
推荐专家
+1
 加载中...