DTO、VO、BO、DAO、POJO 各种对象该如何区分?

326次阅读
没有评论

共计 1500 个字符,预计需要花费 4 分钟才能阅读完成。

// PO (持久对象) - 对应数据库中的一个表
public class UserPO {
    private Long id;
    private String username;
    private String email;
    // ...其他属性
    // getter和setter方法
}

// DTO (数据传输对象) - 用于服务层和展示层之间的数据传输
public class UserDTO {
    private String username;
    private String email;
    // 可能还有其他用于传输的属性
    // getter和setter方法
}

// VO (值对象) - 用于展示层的数据封装
public class UserVO {
    private String username;
    private String email;
    // 只包含展示给前端的属性
    // getter和setter方法
}

// DAO (数据访问对象) - 封装对数据库的访问
public interface UserDAO {
    UserPO findById(Long id);
    void save(UserPO user);
    // ...其他CRUD操作
}

// 服务层 - 处理业务逻辑
public class UserService {
    private UserDAO userDAO;
    
    public UserDTO getUser(Long id) {
        UserPO userPO = userDAO.findById(id);
        UserDTO userDTO = new UserDTO();
        userDTO.setUsername(userPO.getUsername());
        userDTO.setEmail(userPO.getEmail());
        // ...转换其他属性
        return userDTO;
    }
    
    public void createUser(UserDTO userDTO) {
        UserPO userPO = new UserPO();
        userPO.setUsername(userDTO.getUsername());
        userPO.setEmail(userDTO.getEmail());
        // ...设置其他属性
        userDAO.save(userPO);
    }
}

// 展示层 - 处理与用户界面的交互
public class UserController {
    private UserService userService;
    
    public UserVO getUser(Long id) {
        UserDTO userDTO = userService.getUser(id);
        UserVO userVO = new UserVO();
        userVO.setUsername(userDTO.getUsername());
        userVO.setEmail(userDTO.getEmail());
        // ...转换其他属性
        return userVO;
    }
    
    public void createUser(UserVO userVO) {
        UserDTO userDTO = new UserDTO();
        userDTO.setUsername(userVO.getUsername());
        userDTO.setEmail(userVO.getEmail());
        // ...转换其他属性
        userService.createUser(userDTO);
    }
}

  • VO:前端到Controller的 Object
  • DTO:Controller到Service的 Object
  • BO:Service到Controller的 Object
  • PO:Service到DAO的 Object
  • DO:DAO返回给Service的Object
  • POJO : 只需要继承Object 就可以,DO、DTO、PO、VO 都属于POJO
正文完
 1
裴先生
版权声明:本站原创文章,由 裴先生 2024-05-30发表,共计1500字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: