Spring 状态机的 JpaRepositoryState 和 JPA 的 @Entity
Spring state machine's JpaRepositoryState and JPA's @Entity
我们正在考虑将 Spring 状态机 用于以下用例:
我们的一个实体(即来自我们领域模型的 JPA 实体)可以处于多种状态之一,我们有数百万这样的实体(以及我们数据库中的许多行)。
我们正在考虑使用:
org.springframework.statemachine.data.jpa.JpaStateRepository
我们是否应该用 JpaRepositoryState
注释我们的域模型 classes 从而在我们的域模型和 spring 状态机之间创建依赖关系?
上面的替代方案是什么,即确保我们的 JPA 实体 class 不会与 JpaRepositoryState
耦合得太紧?
状态机的machineId
和JPA实体的@Id
之间的mapping/relationship是什么?
JpaRepositoryState
确实与您的域模型没有任何关系,因为我们的实体 class 将机器配置存储在外部存储库中。具体来说,它是一种状态表示,类似地,有实体 classes 用于转换、动作和守卫。
@id
和 machineId
之间没有关系。 @id
只是一个字段标识数据库中的行,如果您通过 spring-data 手动存储实体,它会自动生成。然而,字段 machineId
和 submachineId
一起使用,这样您就可以在存储库中定义多台机器,然后创建一个子状态来引用一台机器,就像在 UML 中您可以定义一个普通状态然后将其定义为对子机的引用。
我似乎收到越来越多与用户实体 classes 相关的问题,以及如何使用状态机处理这些问题,例如 gh453。我现在真的没有答案,因为 Spring Statemachine 从未设计用于处理这些特定用例。这并不意味着 Spring Statemachine 永远不会处理这些场景,我们只是现在没有开箱即用的东西。
我们的文档也缺少这些主题,这清楚地表明我们需要在该领域做得更好。
我们正在考虑将 Spring 状态机 用于以下用例:
我们的一个实体(即来自我们领域模型的 JPA 实体)可以处于多种状态之一,我们有数百万这样的实体(以及我们数据库中的许多行)。
我们正在考虑使用:
org.springframework.statemachine.data.jpa.JpaStateRepository
我们是否应该用
JpaRepositoryState
注释我们的域模型 classes 从而在我们的域模型和 spring 状态机之间创建依赖关系?上面的替代方案是什么,即确保我们的 JPA 实体 class 不会与
JpaRepositoryState
耦合得太紧?状态机的
machineId
和JPA实体的@Id
之间的mapping/relationship是什么?
JpaRepositoryState
确实与您的域模型没有任何关系,因为我们的实体 class 将机器配置存储在外部存储库中。具体来说,它是一种状态表示,类似地,有实体 classes 用于转换、动作和守卫。
@id
和 machineId
之间没有关系。 @id
只是一个字段标识数据库中的行,如果您通过 spring-data 手动存储实体,它会自动生成。然而,字段 machineId
和 submachineId
一起使用,这样您就可以在存储库中定义多台机器,然后创建一个子状态来引用一台机器,就像在 UML 中您可以定义一个普通状态然后将其定义为对子机的引用。
我似乎收到越来越多与用户实体 classes 相关的问题,以及如何使用状态机处理这些问题,例如 gh453。我现在真的没有答案,因为 Spring Statemachine 从未设计用于处理这些特定用例。这并不意味着 Spring Statemachine 永远不会处理这些场景,我们只是现在没有开箱即用的东西。
我们的文档也缺少这些主题,这清楚地表明我们需要在该领域做得更好。