在本教程中,我们将学习如何在Spring Boot应用程序中创建DTO(数据传输对象)类,以及如何使用ModelMapper库将实体转换为DTO,反之亦然。
数据传输对象设计模式是一种经常使用的设计模式。它基本上用于从客户端到服务器一枪传递具有多个属性的数据,以避免多次调用远程服务器。
在用Java(和Spring Boot)编写的RESTful API上使用DTO的另一个优点是,它们可以帮助隐藏域对象(JPA实体)的实现细节。如果我们不仔细处理通过哪些操作可以更改哪些属性,则通过端点公开实体可能会成为安全问题。
ModelMapper库
ModelMapper的目标是通过基于惯例的方式自动确定一个对象模型如何映射到另一个对象模型,从而简化对象映射,同时提供一种简单的,重构安全的API来处理特定的用例,同时人类也可以这样做。
我们将在pom.xml中需要此依赖项:
org.modelmapper
modelmapper
2.3.5
假设JPA Entity:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "posts", uniqueConstraints = {@UniqueConstraint(columnNames = {"title"})})
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)