六边形架构上的DTO和DDD

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

我有一个使用六边形架构和 DDD(领域驱动设计)的 Spring 应用程序(连接到数据库并检索数据的 Web 服务)。 基本结构是

Application
    Controller to webservice
    Spring security configuration
    
Domain
    Services
    Exception
    
Infrastructure
    Persistence (repository + entities)
    

我面临一些与 DTO(数据传输对象)层位置相关的问题。

据我了解,建议在应用程序层上使用 DTO,但这也意味着像我这样的简单项目会重复代码并且更难维护。

为了尊重架构,我们需要遵循这个逻辑

Application
    DataController (webservice)
    DataDto
    
Domain
    DataService
    DataBean
    Mapper (to convert from DataBean to DataDto -> used by DataService)
    
    
Infrastructure
    Mapper (to convert from DataEntity to DataBean)
    DataEntity

但是如果 DataDto 与 DataBean 相同怎么办?这不是会适得其反吗,因为我们正在重复代码并使维护变得更加困难? 像下面这样在域上使用 Dto 不是更好吗?

Application
    DataController (webservice)
    
Domain
    DataService
    DataDto
    
Infrastructure
    Mapper (to convert from DataEntity to DataDto)
    DataEntity

最好的方法是什么?感谢您的投入。

java mapping domain-driven-design dto hexagonal-architecture
1个回答
0
投票

我假设您所说的 DataBean 是一个具有 getter 和 setter 且没有业务逻辑的类。

如果 DataBean 与您的 DTO 相同,那么听起来您的所有业务逻辑都在服务中实现。

使用 DDD 方法,逻辑将分布在域值和实体对象中,但我在您的描述中没有看到这些。看起来不同层之间只是数据的转换。

您确定您的限界上下文足够复杂,可以使用 DDD 模式或此类架构吗?

我想知道 CRUD 或经典分层架构是否还不够。

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