分离持久化模型和领域模型

Separating persistence model and domain model

终于开始掌握领域驱动设计的窍门了,在我看来,将持久性模型 (PM) 与领域模型 (DM) 分开是有意义的。

由于从 PM 到 DM 的映射应该在存储库中完成并且 DM 应该是 不可变的 并且不知道 PM,我是否应该只创建一个工厂函数来获取所有参数但现在调用事件?

服务层使用工厂函数将DTO转换为DM,然后在任务完成时映射回DTO。

或者采用简单的方法,在 DM 中创建一个以 PM 作为参数的工厂函数,反之亦然?

我的解决方案是:从 DDD 换取一些纯度和清晰度,使设计更高效并降低复杂性。

服务层知道涉及的所有层:DTO、DM、PM 和存储库,因此它是进行各种转换的最佳位置。

在典型的流程中,假设您正在执行 API 调用,您将:

  • 根据请求参数构造 DTO
  • 通过将DTO转移到领域模型中的工厂方法来构建领域模型
  • 将新的域模型传递到存储库以进行持久化(DM-to-PM 和 PM-to-DM 方法在存储库中)
  • 将持久化域模型转换为 DTO 以传送回外层