我有一个使用六边形架构和 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
最好的方法是什么?感谢您的投入。
我假设您所说的 DataBean 是一个具有 getter 和 setter 且没有业务逻辑的类。
如果 DataBean 与您的 DTO 相同,那么听起来您的所有业务逻辑都在服务中实现。
使用 DDD 方法,逻辑将分布在域值和实体对象中,但我在您的描述中没有看到这些。看起来不同层之间只是数据的转换。
您确定您的限界上下文足够复杂,可以使用 DDD 模式或此类架构吗?
我想知道 CRUD 或经典分层架构是否还不够。