【发布时间】:2018-05-06 21:19:08
【问题描述】:
如果我需要在事务中改变多个变量,最好的方法是什么?
据我了解,grapQL 将在幕后依次发出单独的变异命令。我需要做什么才能使其具有事务性?
谢谢!
【问题讨论】:
标签: graphql graphql-java
如果我需要在事务中改变多个变量,最好的方法是什么?
据我了解,grapQL 将在幕后依次发出单独的变异命令。我需要做什么才能使其具有事务性?
谢谢!
【问题讨论】:
标签: graphql graphql-java
这是执行多个数据库操作的单个突变吗?如果是这样,您的变异解析器应该执行所有操作,因此它可以管理事务本身:打开、执行多个操作、关闭。
如果您在单个请求中执行多个突变,它们总是按顺序执行。在这种情况下,您可以在启动 GraphQL 处理时(例如在控制器或 servlet 或仪器中)简单地打开事务,并在收到结果(或异常)后关闭它。所以事务管理围绕 GraphQL 执行,但在它之外。
如果您只希望请求中的某些操作以事务方式执行而不是其他操作,那么您已经处于最好留给框架的领域。使用 Spring 的事务管理之类的东西,让它处理正确的生命周期。
另一方面,如果您尝试实现跨越多个不同请求的事务,那么这确实不是您应该做的事情,出于多种原因,极其复杂的事务管理只是其中之一。
【讨论】: