DTO
Data Transfer Object(数据传输对象):用于在网络上进行通讯的对象。在API接口输入输出的地方经常需要使用DTO。
DMO
Data Model Object(数据模型对象):用于表达业务的应用模型,一般是一些需要持久化的对象。在数据访问层,经常要使用到DMO。
有不同的称呼,有的叫实体对象(Entity Object)、领域对象(Domain Object)
DTO与DMO
DTO与DMO虽然叫法不同,但在大多数情况下所承载的数据字段是相同的。
DTO有时候会根据实际情况,裁剪或添加部分字段。
DTO与DMO相互转换
使用modelmapper进行他们之间的互相转换。
引入依赖
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.3</version>
</dependency>
配置
@Bean
public ModelMapper modelMapper(){
return new ModelMapper();
}
使用样例
创建一个DTO
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class AccountDto {
@NotBlank
private String id;
private String name;
@Email(message = "Invalid email")
private String email;
@PhoneNumber
private String phoneNumber;
}
创建一个DMO
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Account {
private String id;
private String name;
private String email;
private String phoneNumber;
}
创建一个测试接口
@Slf4j
@RestController
@RequiredArgsConstructor
public class ParamVerifyController {
private final ModelMapper modelMapper;
@PostMapping("customParamVerify")
@ResponseBody
public String customParamVerify(@RequestBody @Valid AccountDto accountDto){
Account account = this.modelMapper.map(accountDto, Account.class);
log.info("Account {}",account);
return "ok";
}
}