【问题标题】:Spring state machine's JpaRepositoryState and JPA's @EntitySpring 状态机 JpaRepository State 和 JPA @Entity
【发布时间】:2018-05-31 23:23:57
【问题描述】:

我们正在考虑将 Spring 状态机用于以下用例:

我们的一个实体(即我们的领域模型中的 JPA 实体)可以处于多种状态之一,并且我们有数百万个这样的实体(以及我们数据库中的许多行)。

我们正在考虑使用:

org.springframework.statemachine.data.jpa.JpaStateRepository
  • 我们是否应该使用JpaRepositoryState 注释我们的域模型类,从而在我们的域模型和弹簧状态机之间创建依赖关系?

  • 上述方法的替代方案是什么,即确保我们的 JPA 实体类不会与JpaRepositoryState 耦合得太紧?

  • 状态机的machineId 和JPA 实体的@Id 之间的映射/关系是什么?

【问题讨论】:

    标签: spring-statemachine


    【解决方案1】:

    JpaRepositoryState 确实与您的域模型没有任何关系,因为它是我们将机器配置存储在外部存储库中的实体类。具体来说,它是一种状态表示,类似地,还有用于转换、动作和守卫的实体类。

    @idmachineId 之间没有关系。 @id 只是数据库中一个标识行的字段,如果您通过 spring-data 手动存储实体,则会自动生成该字段。然而,machineIdsubmachineId 字段一起使用,以便您能够在存储库中定义多台机器,然后创建一个子状态来引用一台机器,类似地在 UML 中您可以定义一个普通状态,然后将其定义为对子机的引用。

    似乎我收到了越来越多与用户实体类相关的问题,以及如何使用状态机处理这些问题,例如gh453。我现在真的没有答案,因为 Spring Statemachine 从来没有被设计用来处理这些特定的用例。这并不意味着 Spring Statemachine 永远不会处理这些场景,我们只是现在没有任何开箱即用的东西。

    我们的文档也缺少这些主题,这清楚地表明我们需要在该领域做得更好。

    【讨论】:

    • 感谢您抽出宝贵时间回复。
    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 2019-03-27
    • 2016-07-26
    • 2017-03-23
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多