在目前互联网框架中,我们听得最多的三层架构,主要有controller、serivce、dao,所以就引入了一系列的按照包命名来区分各层次,比如entity、web、dao....,那么再细分还有VO、DTO、DO、PO...,今天就大概了解了一下,做个笔记~

概念:

  • VO:value object 值对象 / view object 表现层对象
  • DTO(TO):Data Transfer Object 数据传输对象
  • DO:Domain Object 领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
  • PO:persistent object 持久对象
  • POJO :plain ordinary java object 无规则简单java对象
  • BO:business object 业务对象
  • DAO:data access object数据访问对象

其实我们也没有必要区分得非常细,大概知道就行了,可以进行合并在一起。

工作模型:

用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO。

展示层把VO转换为服务层对应方法所要求的DTO,传送给服务层。

服务层首先根据DTO的数据构造(或重建)一个DO,调用DO的业务方法完成具体业务。

服务层把DO转换为持久层对应的PO(可以使用ORM工具,也可以不用),调用持久层的持久化方法,把PO传递给它,完成持久化操作。

对于一个逆向操作,如读取数据,也是用类似的方式转换和传递,略。

简易关系图:

浅谈VO、DTO、DO、PO和POJO的概念、用途及使用

简单记忆法:以SSM为例

DO:对应数据库表结构
VO:一般用于前端展示使用
DTO:用于数据传递。(接口入参和接口返回值都可以)

controller层:
public List<UserVO> getUsers(UserDTO userDto);
 
Service层:
List<UserDTO> getUsers(UserDTO userDto);

DAO层:
List<UserDTO> getUsers(UserDO userDo);

参考链接:
https://www.cnblogs.com/zhangshiwen/p/7945064.html
https://www.cnblogs.com/jpfss/p/9947811.html
https://www.cnblogs.com/zxf330301/p/6534643.html
https://blog.csdn.net/u011870547/article/details/81077153

文章目录