我使用的是spring/hibernate。我有服务层和DAO层。事务放在服务层中。我要上FirstServiceImpl课。在FirstServiceImpl类的一个方法中,它有500行代码。我所做的是将所有500行代码放在一个单独的类中(编写一个接口和实现类。在FirstServiceImpl类中,我自动连接了新创建的接口以访问它的单个方法)。我将@Transactional放在了FirstServiceImpl类中。
我的问题是“新创建的类逻辑是否也在事务上下文中运行”?
谢谢!
发布于 2012-06-08 17:49:53
我不确定,但我认为它将使用transaction propagation。但我可以告诉你测试它是否工作的可靠方法。
在单个事务中通过您的代码执行以下数据库操作。
在数据库中插入/更新一行,尝试在同一事务中插入/更新第二行。
在插入第二行时故意引发异常。如果您可以在数据库中看到"first entry“,这意味着您的事务不会回滚。但它并不起作用。
而如果数据库中没有第一行条目,这意味着您的事务将回滚。在这里你可以得到UnexpectedRollbackException.
在测试之前,确保您的注解是@Transactional(propagation=Propagation.REQUIRED)
https://stackoverflow.com/questions/10945810
复制相似问题