java web 使用ssh框架。使用Spring的AOP为service层上的每个方法添加事务。程序只要调用service层的方法,方法就会被(SPring的AOP)拦截,打开session,开启事务,方法执行完了则会提交事务,关闭连接。我现在的疑问是,如果service层的方法调用了另一个service层方法,那执行另一个service方法时会被拦截并且也打来连接,开启事务,提交事务,关闭连接吗,在一个session里面怎么会再打开一个连接呢?感觉矛盾。哪位大神知道的给小弟讲解下,不胜感激!

解决方案 »

  1.   

    PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 
    PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。 
    PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。 
    PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。 
    PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 
    PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。 
    PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与
      

  2.   

    事务传播行为的类型。
    在spring <tx:advice....>里面(事务增强)定义的。
      

  3.   

    嵌套这样的你就自己可以再加一个service,这个service里面做多个service之间的调用 给这个service做事务。上面的是spring配置里面事务类型。我说的是个让你容易理解的方式 ,你看看如何