1

如果我需要在事务中改变多个变量,最好的方法是什么?

据我了解,grapQL 将在幕后依次发出单独的变异命令。我需要做什么才能使其具有事务性?

谢谢!

4

1 回答 1

1

这是执行多个数据库操作的单个突变吗?如果是这样,您的变异解析器应该执行所有操作,因此它可以管理事务本身:打开、执行多个操作、关闭。

如果您在单个请求中执行多个突变,它们总是按顺序执行。在这种情况下,您可以在启动 GraphQL 处理时(例如在控制器或 servlet 或仪器中)简单地打开事务,并在收到结果(或异常)后关闭它。所以事务管理是围绕GraphQL 执行,但在它之外。

如果您只希望请求中的某些操作以事务方式执行而不是其他操作,那么您已经处于最好留给框架的领域。使用 Spring 的事务管理之类的东西,让它处理正确的生命周期。

另一方面,如果您尝试实现跨越多个不同请求的事务,那么这实际上不是您应该做的事情,由于许多原因,极其复杂的事务管理只是其中之一。

于 2018-01-26T00:28:37.880 回答