Java 如何在多个类中回滚事务?

Java 如何在多个类中回滚事务?,java,spring,hibernate,Java,Spring,Hibernate,我有两个类,ServiceA和ServiceB,它们都有调用数据库的方法 在ServiceA中,我有以下代码 public void updateData() { //some database updates serviceB.addDetails(); //some more database updates } 下面是我在applicationContext中对这两个类的配置 <bean id="serviceATarget" class="com.company.service.

我有两个类,ServiceA和ServiceB,它们都有调用数据库的方法

在ServiceA中,我有以下代码

public void updateData() {
//some database updates
serviceB.addDetails();
//some more database updates
}
下面是我在applicationContext中对这两个类的配置

<bean id="serviceATarget" class="com.company.service.ServiceA">
    <property name="serviceB" ref="serviceB" />
    <property name="serviceADAO" ref="serviceADAO" />
</bean>
<bean id="serviceA" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager" ref="transactionManager" />
    <property name="target" ref="serviceATarget" />
    <property name="transactionAttributes">
    <props>
        <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
    </props>
</property>
</bean>

<bean id="serviceBTarget" class="com.company.service.serviceB">
    <property name="serviceBDAO" ref="serviceBDAO" />
</bean>

<bean id="serviceB" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager" ref="transactionManager" />
    <property name="target" ref="serviceBTarget" />
    <property name="transactionAttributes">
    <props>
    <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
    </props>
    </property>
</bean>
问题在于,在ServiceA中,如果在//some more database updates部分之后发生异常,则不会回滚在serviceB.addDetails中进行的更新


我们将不胜感激。谢谢

您可能希望使用注释,这样更容易

Spring2.0及更高版本中的声明性事务配置与Spring的早期版本有很大不同。主要区别在于不再需要配置TransactionProxyFactoryBean bean

您喜欢服务A调用服务B,并用@Transactional Propagation.REQUIRED注释它们。
任何异常都将回滚事务。如果在我的应用程序中没有捕获和处理它,我们将使用xml进行配置,因此我更愿意坚持使用xml。不管怎样,我在xml中也做了同样的事情,这一行是必需的,-例外,对吗?这不起作用。。。无论如何,我在xml中也在做同样的事情。