小编pep*_*lbe的帖子

在 Spring 启动项目中将实体到 DTO 转换放在哪里?

我正在开发 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 :服务返回的对象会直接返回到前端(控制器代码不多)

  • 缺点:我不知道^^'

java rest spring spring-mvc spring-boot

10
推荐指数
1
解决办法
5744
查看次数

Java记录与lombok @Value

记录是自 Java 14(第一个预览版)和 Java 15(第二个预览版)以来的新语言功能。根据我的理解,它们将用于减少不可变数据对象中的样板代码。

所以这一行:

public record Person (String firstName, String lastName) {}
Run Code Online (Sandbox Code Playgroud)

相当于声明一个具有私有final字段、每个字段的getter、一个公共构造函数以及equals、hashCode和toString方法的类。

@Value然而,这与使用 lombok注释几乎相同:

@Value
public class Person {
    
    String firstName;
    String lastName;
}
Run Code Online (Sandbox Code Playgroud)

除了你显然不需要处理 lombok 依赖之外,使用记录还有什么优点吗?

java lombok java-15

8
推荐指数
2
解决办法
5218
查看次数

标签 统计

java ×2

java-15 ×1

lombok ×1

rest ×1

spring ×1

spring-boot ×1

spring-mvc ×1