Java 春季事务的传播是不稳定的
我有一个使用事务性服务的Spring/Hibernate应用程序,我对使用新传播时事务如何工作感到有点困惑:Java 春季事务的传播是不稳定的,java,spring,hibernate,Java,Spring,Hibernate,我有一个使用事务性服务的Spring/Hibernate应用程序,我对使用新传播时事务如何工作感到有点困惑: @Transactional method A() | |-loop for each element | |-@Transactional(propagation=Propagation.REQUIRES_NEW) method B() |-make some entity change and sav
@Transactional
method A()
|
|-loop for each element
|
|-@Transactional(propagation=Propagation.REQUIRES_NEW)
method B()
|-make some entity change and save()
如你们所见,我有一个实体循环,每个实体都在一个单独的方法中处理,这个方法有新的事务。请确认我的假设:
请确保使用Spring调用methodB(),而不仅仅是Java调用。最简单的方法是将methodB()放在另一个类中,与methodA()不同。另一种方法是使用@Resource注释,但它看起来有点棘手。答案很好。但是,如果在步骤4中发生异常并将其传播到父方法,从而导致父方法中断其自己的事务,那么会发生什么情况?即使父事务回滚,这些步骤1-3项是否会被保留?methodA中的事务不是父事务,它是另一个与methodB中的事务没有连接的事务。记住,你写了“传播。需要新的”。再次感谢,我将我的新问题提取到一个新的线程中。如果你在另一个类中创建这个方法并将它标记为REQUIRES_NEW,那么当你从当前类调用这个方法时,循环是否工作正常?我正在尝试这个,只有循环的迭代执行,然后它几乎停止了。为什么呢?你也面对过吗?