【问题标题】:Transaction Management in Spring Data RESTSpring Data REST 中的事务管理
【发布时间】:2016-09-10 06:49:27
【问题描述】:

在使用 Spring Data REST 时,我们是否有任何内置的事务管理,或者必须从调用应用程序/服务手动维护/处理。

比如说,我有两个调用(第一个 POST(用于创建)和 PATCH(使用 uri-lists 更新/插入关联资源)),我想将它们视为一个事务。

谢谢 巴拉特

【问题讨论】:

  • 换句话说,你想在 POST 上打开一个事务,在 PATCH 之后关闭它——这可能永远不会发生?抱歉,尝试让事务以某种方式覆盖多个 HTTP 请求似乎不是一个好主意……但这只是个人猜测。

标签: java spring-data-rest


【解决方案1】:

在 Spring Data Rest 中,每个存储库操作都在事务中运行。甚至事件处理程序也没有在存储库事务中运行。当然,REST API 上的不同操作确实在单独的事务中运行。

关于这个话题有一个有趣的问题: Handle spring-data-rest application events within the transaction

如果您想在一个事务中进行创建和关联,那么使用当前实体映射实现此目的的唯一方法是创建一个执行此操作的自定义控制器。

另一种映射策略是将关联实体视为容器 - 因此关联实体没有导出的存储库,而是在父级中维护。

【讨论】:

    【解决方案2】:

    REST 的重点是拥有独立的工作单元。如果您希望跨调用保持事务开放,这可能表明您需要调整 RESTful 策略。

    看看:Transaction strategy for microservices

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 2017-12-23
      • 2014-11-01
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多