带有冲刺靴的多重六边形架构

问题描述 投票:0回答:1

我使用 Spring Data 和 Hibernate 开发 Spring Boot 应用程序。 我正在使用六边形架构。 我有 2 个六边形:

  1. 连接管理
  2. 订单管理

每个六边形与数据库中名为 User 的同一个表进行交互。 在 OrderManagment 六边形中,我使用 User 表,因为用户有一个订单列表 在 ConnexionManagment 六边形中,我使用 User 表,因为我需要在用户订阅和其他事情时管理用户信息。

因此在每个六边形中U都添加了相同的UserjpaEntity来与基础设施层中的表user进行交互。

在每个六边形中重复类 userJpaEntity 是一个好习惯吗? 或者我必须创建一个公共六边形并将所有公共类放入这个六边形中?

最后,我们可以想象其他六边形按功能域分开,需要与数据库中的同一个表用户进行交互。

那么你能帮我找到最佳实践吗? enter image description here 谢谢。

java spring-boot hibernate domain-driven-design hexagonal-architecture
1个回答
0
投票

在每个六边形中重复类 userJpaEntity 是一个好习惯吗?

两个上下文是否访问相同的属性,或者您是否从 ConnexionManagment 和 OrderManagment 访问 userJpaEntity 的不同部分?换句话说,您是否在每个上下文中从数据库中加载了比它们需要的更多的东西?如果是这样,则它不是您需要的 userJpaEntity。

即使 userJpaEntity 在两个上下文中看起来相同。 userJpaEntity 是否会因为同样的原因而改变?如果不是,则应将其分开以遵守单一责任原则,即使看起来相同。通常只是偶然看起来一样。

或者我必须创建一个公共六边形并将所有公共类放入这个六边形中?

您可能想使用共享字距。我的意思是您有一个 userJpaEntity 映射到的公共域实体。拥有共享内核也可能意味着您拥有共享的“基础设施”,例如 userJpaEntity,用于加载域实体。然后,您可以将 userJpaEntity 放入由辅助端口实现者(适配器)使用的单独模块(库)中。我不会称其为普通六边形。它只是一个共享内核和一些其他共享库。只是共享六边形的一部分。

每当您使用不同上下文中的一件事物时,您就会在它们之间创建依赖关系。因此,当所有使用的东西发生变化时,您必须在所有上下文中进行更改。可能没问题。

© www.soinside.com 2019 - 2024. All rights reserved.