浅谈VO、DTO、DO、PO和POJO的概念、用途及使用
在目前互联网框架中,我们听得最多的三层架构,主要有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传递给它,完成持久化操作。
对于一个逆向操作,如读取数据,也是用类似的方式转换和传递,略。
简易关系图:
简单记忆法:以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
文章目录
商业转载请联系作者获得授权,非商业转载请注明本文出处及文章链接