Spring Transactional上下文包装?

时间:2012-06-08 08:57:32

标签: java spring hibernate

我正在使用spring / hibernate。我有服务层和DAO层。交易放在服务层中。 我有FirstServiceImpl类。在FirstServiceImpl类的一个方法中,它有500行代码。我做的是我把所有500行代码放在一个单独的类中(编写了一个接口和实现类。在FirstServiceImpl类中,我自动连接了新创建的接口以访问其单个方法)。 我把@Transactional放在FirstServiceImpl类上。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定,但我认为它会使用transaction propagation。但我可以告诉你一定要测试它是否有效。

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

  

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

     

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

     

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

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