当前位置: 首页 > 面试题库 >

@Transactional(propagation = Propagation.REQUIRED)

爱唯
2023-03-14
问题内容

如果有人可以解释此注释的作用以及确切的使用时间:

@Transactional(propagation=Propagation.REQUIRED)

谢谢


问题答案:

当传播设置为PROPAGATION_REQUIRED时,将为应用该设置的每种方法创建一个逻辑事务作用域。每个此类逻辑事务作用域可以单独确定仅回滚状态,而外部事务作用域在逻辑上与内部事务作用域无关。当然,在标准PROPAGATION_REQUIRED行为的情况下,所有这些范围都将映射到同一物理事务。因此,内部事务范围中设置的仅回滚标记确实会影响外部事务实际提交的机会(正如你期望的那样)。



 类似资料:
  • 问题内容: 有人可以通过实际示例解释注释中的隔离和传播参数吗? 基本上,何时和为什么我应该选择更改其默认值。 问题答案: 好的问题,尽管不是一个简单的答案。 Propagation 定义事务之间的关系。常用选项: :代码将始终在事务中运行。创建一个新事务或重用一个事务(如果有)。 :代码将始终在新事务中运行。如果存在当前事务,则将其挂起。 Isolation 定义事务之间的数据契约。 :允许脏读。

  • 问题内容: 这是我的问题: 我正在Java EE / Spring / Hibernate应用程序上运行批处理。此批次称为。此方法调用可以抛出的(一个扩展类)。看起来是这样的: 随着执行的继续,会捕获到异常,但是在method1关闭事务时,将引发RollbackException。 这是堆栈跟踪: 当不抛出此异常时,它将很好地工作。 我尝试过的 设置 尝试赶上 但这并没有改变任何东西。 由于异常发

  • 有两个代码片段。 在第一个例子中,我们从总是引发一些异常的任务中创建CompletableFuture。然后我们将“例外”方法应用于该未来,然后是“接受”方法。我们不会将Accept方法返回的新future分配给任何变量。然后我们对原始未来调用“join”。我们看到的是,“异常”方法以及“thenAccept”都已被调用。我们看到它是因为他们在输出中打印了适当的行。但“异常”方法并没有抑制该异常。

  • 问题内容: 是否可以在spring嵌套@Transactional带注释的方法?考虑这样的事情: 如果我在b()中回滚并在a()中回滚,在这种情况下会发生什么? 问题答案: 不需要 对方法的第二个注释,因为默认情况下 ,其传播为,因此由method调用的方法将是事务性的。如果要在通过method调用的方法中启动新事务,则需要修改传播规则。阅读有关交易传播的信息。