【问题标题】:Spring Transactional context wrapping?Spring事务上下文包装?
【发布时间】:2012-06-08 08:57:32
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:

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

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

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

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

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

    在测试之前确保你的注解是@Transactional(propagation=Propagation.REQUIRED)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2011-05-07
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      相关资源
      最近更新 更多