Which layer should be used for conversion to DTO from Domain Object

僤鯓⒐⒋嵵緔 提交于 2020-03-18 03:37:32

问题


We are creating rest api's with Spring Boot. We have three layers in our project(Repository, Service and Controller).

Lets say I have GetUser api in my controller that return UserDTO object.

@GetMapping
public UserDTO getUser() {
   return userService.getUser();    
}

Whether userService.getUser() returns UserDTO object or it returns User object and it is converted to UserDTO object in the controller? Which one is better way?

Shortly, domain object to DTO object conversion, should be done in service layer or controller layer?


回答1:


I think there is no "better way" for converting your domain objects to your DTO objects, it's a matter of taste. In my projects I convert the domain objects to the DTO in the service layer as part of my "business logic". So you reduce the accessability of your domain objects only to your service layer. Furthermore I want to reduce the "logic" inside my controllers as they are part of the application layer.

PS: If you are looking for several ways to convert your domain objects to your DTOs have look at one of my latest Stackoverflow questions (How to properly convert domain entities to DTOs while considering scalability & testability)




回答2:


It depends on application needs and architecture. Idea is to keep dto conversion at edge. It is generally prefer to have dto and domain conversion at the controller level. If you want to keep services/business logic independent of consumer, then it is always better to have at api level. This becomes more clear if your service has been consumed by more than one consumer.



来源:https://stackoverflow.com/questions/47822938/which-layer-should-be-used-for-conversion-to-dto-from-domain-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!