【发布时间】:2016-10-19 08:11:30
【问题描述】:
我是领域驱动设计的新手。目前我有大约 5 个 bean,它们之间有一个层次结构。严格来说,bean 是 DTO。但是,我会将它们从域层返回到服务层和控制器。这对我来说一直很好,但是根据域驱动设计,域层必须返回 BO,服务必须返回控制器将映射到 DTO 的 DTO 或 BO。我没有看到这一点,因为最后我会将服务返回的对象转换为 JSON,它只是数据。那么我真的有必要拥有单独的 BO 和 DTO。
请注意,我有一个无状态业务对象,它执行特定业务功能的所有操作并根据需要返回多个 DTO。如果我走在正确的道路上,请提供建议。
【问题讨论】:
-
那么您会删除哪个,实体还是 DTO?
-
我将删除实体
-
没有实体的 DDD 毫无意义。阅读它(最好是其中一本书),你就会明白为什么。
-
这里的实体是没有业务逻辑的业务对象。业务逻辑是独立的。我读过领域驱动设计,我知道你需要实体。但从我的看法来看,我认为在实体中拥有业务逻辑可能会导致问题。例如,让我们将 Student 作为一个实体。现在,如果我想获取学生列表,则该逻辑不能存在于该实体中。因此,我需要在其他地方编写此逻辑,这意味着我需要从其他层从数据库中获取数据。现在学生实体正在访问数据库。
-
获取学生是 StudentRepository 的工作,它的接口定义在 Domain 层,但实现在 Persistence 层。所有这些都在书中进行了描述。