前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈VO、DTO、DO、PO和POJO的概念、用途及使用

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

作者头像
Lcry
发布2022-11-29 19:17:26
1.4K0
发布2022-11-29 19:17:26
举报
文章被收录于专栏:Lcry个人博客

在目前互联网框架中,我们听得最多的三层架构,主要有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的概念、用途及使用
浅谈VO、DTO、DO、PO和POJO的概念、用途及使用

简单记忆法:以SSM为例

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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念:
  • 工作模型:
  • 简易关系图:
  • 简单记忆法:以SSM为例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档