Meh*_*ari 10 java rest spring spring-mvc spring-boot
我正在开发 Spring Boot(MVC、DATA、JPA...)+ angular 项目。
我被困在两个选项之间。尽管如此,它们都可以正常工作。
只是从架构的角度来看,哪个是最好的,哪个是最常用的。
我的问题是在哪里进行从实体到 DTO 的转换的最佳方法。
选项 1:我现在正在实施的选项。
我把转换放在控制器中。在我的控制器中,我调用一个服务方法来获取实体列表。然后,我使用 ModelMapper将实体列表转换为DTO列表,并将结果返回到前面。
Entity ==> Repository ==> Service ==> Controller ==> ModelMapper ==> Return DTO
Run Code Online (Sandbox Code Playgroud)
优点:服务层将始终返回实体对象(重用)
缺点:控制器中有很多代码(以防我需要解析列表......)
选项2:
将转换放在服务层。
因此,我的服务层将返回一个 DTO 列表,而不是返回实体列表。
Entity ==> Repository ==> Service ==> ModelMapper ==> Controller ==> Return DTO
Run Code Online (Sandbox Code Playgroud)
Pros :服务返回的对象会直接返回到前端(控制器代码不多)
缺点:我不知道^^'
小智 2
最好的方法,基于您的项目结构。但是,如果您总是将服务调用到控制器中,则应该使用选项 2,然后它将返回所需的结果。
此外,如果你想减少方法中的大量转换代码,你可以使用@Component创建一个转换器类来映射你的实体和DTO。