Java SpringBoot中的 Entity DTO VO 三者的关系 这篇就够了
    		       		warning:
    		            这篇文章距离上次修改已过435天,其中的内容可能已经有所变动。
    		        
        		                
                Entity、DTO和VO是软件开发中常用的三种数据传输对象,它们分别代表实体类、数据传输对象和视图对象。
- Entity(实体类):通常与数据库中的表相映射,用于存储和管理数据。
 - DTO(数据传输对象):用于服务间的数据传输,可以是Entity的一部分或者全部,也可以是多个Entity的组合。
 - VO(视图对象):用于展示层,封装了与特定视图相关的数据。
 
关系:
- Entity和DTO通常是一对一的关系,DTO设计为只包含必要的数据以减少网络传输开销。
 - Entity和VO通常是一对一的关系,VO设计为只包含为特定视图所需的数据。
 - DTO和VO在数据展示和服务调用之间可能是一对一,也可能是一对多或多对一的关系,取决于视图和服务的具体需求。
 
示例代码:
// 实体类Entity
public class UserEntity {
    private Long id;
    private String username;
    private String password;
    private String email;
    // 省略getter和setter
}
 
// 数据传输对象DTO
public class UserDTO {
    private Long id;
    private String username;
    // 可能不包含password和email信息,以减少传输数据量
    // 省略getter和setter
}
 
// 视图对象VO
public class UserVO {
    private String userName; // 可能会对字段进行重命名以适应视图展示
    private String email;
    // 省略getter和setter
}在SpringBoot中,你可以使用这些类进行数据的传输和展示,例如在Controller中:
@RestController
public class UserController {
 
    @GetMapping("/users/{id}")
    public UserVO getUser(@PathVariable Long id) {
        UserEntity userEntity = userService.getUserById(id);
        UserDTO userDTO = new UserDTO(userEntity.getId(), userEntity.getUsername());
        UserVO userVO = convertDTOToVO(userDTO);
        return userVO;
    }
 
    private UserVO convertDTOToVO(UserDTO dto) {
        // 转换逻辑,如重命名字段、过滤数据等
        return new UserVO(dto.getUsername(), ""); // 假设我们不展示email
    }
}在实际开发中,这三种对象通常会通过相应的转换工具或方法进行转换,以适应不同层或视图的需求。
评论已关闭