声明式事务:
<tx:method name="add*" propagation="REQUIRED" />serivcesImplpublic void addUserinfo() {
System.out.println("hei");
String hql = "insert into userinfo (userid,userpw) select '397','2' ";
userinfoDao.executeQuery(hql);
String hql2 = "insert into userinfo (userid,userpw) select '378','2' ";
userinfoDao.executeQuery(hql2);
}
事务配置在业务逻辑层,并且不需要try catch 捕获异常,而应该让
spring捕获这个异常,当有异常的时候,事务会自动回滚的,经测试
也确实如此

解决方案 »

  1.   

    http://topic.csdn.net/u/20081005/22/27583caf-f6cf-491f-86e9-60f5d397c340.html
    看看他回的
      

  2.   

    楼主和楼下别像楼上那么写,异常被吃掉了还靠什么回滚了
    在有try catch机制的语言里面强烈不建议使用boolean来判断成败与否
    另外这里还有异常处理的隐患,catch了后没什么也没干只是输出了下,没有异常链,真正的大程序里面会导致严重的问题
    是与try catch机制相违背的。这里有几点不了解
    1.异常被吃掉了还靠什么回滚了
    catch(Exception e){
      throw new RuntimeException("这样的话,事务也可以回滚,也只有RuntimeException才可以回滚");
    }2.在有try catch机制的语言里面强烈不建议使用boolean来判断成败与否
    3.另外这里还有异常处理的隐患,catch了后没什么也没干只是输出了下,没有异常链,
      真正的大程序里面会导致严重的问题,是与try catch机制相违背的。
    可以讲讲吗?