2

我正在使用弹簧/休眠。我有服务层和 DAO 层。事务放在服务层。我有 FirstServiceImpl 类。在 FirstServiceImpl 类的一个方法中,它有 500 行代码。我所做的是将所有 500 行代码放在一个单独的类中(编写了一个接口和实现类。在 FirstServiceImpl 类中,我自动装配了新创建的接口以访问其单个方法)。我将 @Transactional 放在 FirstServiceImpl 类上。

我的问题是“新创建的类逻辑是否也在事务上下文中运行”?

谢谢!

4

1 回答 1

0

我不确定,但我认为它会使用事务传播。但我可以告诉你确定的方法来测试它是否有效。

在单个事务中通过您的代码执行以下数据库操作。

在数据库中插入/更新一行,尝试在同一事务中插入/更新第二行。

在插入第二行时故意引发异常。如果您可以在数据库中看到“第一个条目”,则表示您的事务没有回滚。它不起作用。

而如果数据库中没有第一行条目,则意味着您的事务已回滚。在这里你可能会得到UnexpectedRollbackException

在测试之前,请确保您的注释是@Transactional(propagation=Propagation.REQUIRED)

于 2012-06-08T09:49:52.553 回答