我应该在哪里进行转换:Domain objectDTO?

问题描述 投票:4回答:3

在域层或数据访问层?

data-access-layer dto domain-object
3个回答
5
投票

DTO的主要动机是呈现针对另一层(通常是表示层)定制的界面。例如,数据输入屏幕可能需要来自用户对象的一些数据位以及来自订单的一些位等。在这种情况下,域到DTO应该发生在表示层调用的层上,即通常一个“服务”层。

Dozer这样的库可以自动完成域模型和DTO之间转换的繁重工作。

关键的一点是,DTO旨在从更丰富的域模型对象中抽象出数据(而不是业务逻辑) - 因此,应尽可能早地将DTO转换回域对象(在服务层),以便应用层的其余部分可以使用更丰富的域对象(数据和业务逻辑)


2
投票

我不太喜欢DTO,但我说不要在数据层做。数据层处理模型对象及其持久性。为什么通过将DTO引入其中来将其与其他层结合起来?我将它们映射到其他地方,可能在服务和层之间,只是在它们跨越创建它们的位置和它们被使用的位置之间的边界处。


0
投票

把它放在MVC上下文中,如果你有控制器和服务层,你应该把它放在控制器中。这将使DTO更接近视图层并允许服务层仅与域对象一起播放,从而避免可能与其他模型混淆。

DTO本身实际上是MVC模型(在此解释:https://stackoverflow.com/a/1058186)。

下面是一个推荐的教程,它将控制器,服务层和DTO概念结合在一起(在Java中使用Spring框架,但其他平台的概念也很清楚):https://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application

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