我正在开发一个基于Spring Boot(MVC,DATA,JPA...)和Angular的项目。
我在两个选项之间犯难,尽管两者都没有任何问题。
从架构角度来看,哪一个是最好的或者哪一个被使用得最多。
我的问题是什么是从实体到DTO转换的最佳方法。
选项1:目前我正在实施的方案。
我将转换放在控制器中。在我的控制器中,我调用一个服务方法来获取一系列实体。然后,我使用ModelMapper将实体列表转换为DTO列表并将结果返回给前端。
Entity ==> Repository ==> Service ==> Controller ==> ModelMapper ==> Return DTO
优点: 服务层始终会返回实体对象(可重复使用)
缺点: 控制器中有很多代码(如果我需要解析列表...)
选项2 :
将转换放在服务层中。
因此,我的服务层将返回DTO的列表,而不是实体列表。
Entity ==> Repository ==> Service ==> ModelMapper ==> Controller ==> Return DTO
优点:服务返回的对象将直接返回到前端(控制器中没有太多代码)
缺点:我不知道 ^^'
优点:服务返回的对象将直接返回到前端(控制器中没有太多代码)
缺点:我不知道 ^^'
service===> Facade ===> ModelMapper
之间增加一个额外的层。Facade
将会从service获取实体并将其转换为DTO,同时处理GET
请求,反之,在POST/PUT
请求中也是如此。它还可以使你的控制器和服务类保持更清晰。 - rdj7