我正在使用spring / hibernate。我有服务层和DAO层。交易放在服务层中。 我有FirstServiceImpl类。在FirstServiceImpl类的一个方法中,它有500行代码。我做的是我把所有500行代码放在一个单独的类中(编写了一个接口和实现类。在FirstServiceImpl类中,我自动连接了新创建的接口以访问其单个方法)。 我把@Transactional放在FirstServiceImpl类上。
我的问题是“新创建的类逻辑是否也在事务上下文中运行”?
谢谢!
答案 0 :(得分:0)
我不确定,但我认为它会使用transaction propagation。但我可以告诉你一定要测试它是否有效。
在单个事务中通过代码执行以下数据库操作。
在db中插入/更新一行,尝试在同一事务中插入/更新第二行。
插入第二行时故意引发异常。如果您可以在数据库中看到“第一个条目”,则表示您的事务未回滚。它不起作用。
如果数据库中没有第一行条目,则意味着您的事务将被回滚。在这里你可能会得到 UnexpectedRollbackException 。
在测试之前,请确保您的注释为@Transactional(propagation=Propagation.REQUIRED)