【项目】DTO、VO以及PO之间的关系和区别
【项目】DTO、VO以及PO之间的关系和区别
文章目录
- 【项目】DTO、VO以及PO之间的关系和区别
- 1.概念
- 2. 作用
1.概念
DTO:DTO是 Data Transfer Object 的缩写,也叫数据传输对象。
PO:PO是 Persistent Object 的缩写,也叫持久化对象。
VO:VO是 View Object 的缩写,也叫视图对象。
2. 作用
DTO:dto用于接口层向业务层之间传输数据。
PO:po用于业务层与持久层之间传输数据。
VO:vo用于前端与接口层之间传输数据。
如下图所示:

当前端有多个平台,且接口存在差异时就需要设置VO对象用于前端和接口层传输数据。
比如:
查询课程列表接口,PC端和移动端是否共用一个接口呢?
如果它们俩共用一个接口,那就可以不需要使用VO对象,仅使用一个DTO对象再接口层和业务层传输数据即可。
如果它们俩的查询条件或查询接口不一样,那么此时对于课程列表接口就需要分别定义PC端接口和移动端接口,每个接口定义的VO对象以查询参数而定。
移动端查询:根据课程状态查询,查询结果只有课程名称和课程状态。
PC端查询:可以根据课程名称、课程状态、课程审核状态等条件查询,查询结果也比手机查询结果内容多。
此时,Service业务尽量提供一个业务接口,即使两个前端接口需要的数据不一样,Service可以提供一个最全查询结果,有Controller进行整合后返回前端。
如下图所示:

相关文章:
【项目】DTO、VO以及PO之间的关系和区别
【项目】DTO、VO以及PO之间的关系和区别 文章目录【项目】DTO、VO以及PO之间的关系和区别1.概念2. 作用1.概念 DTO:DTO是 Data Transfer Object 的缩写,也叫数据传输对象。 PO:PO是 Persistent Object 的缩写,也叫持久化对象。 …...
Nginx介绍
什么是Nginx? Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接&#x…...
你什么档次?敢和我用一样的即时通讯平台WorkPlus?
现今,很多企业越来越青睐私有化部署,尤其是在选择组织内部即时通讯平台的时候,更是会提出私有化部署的需求。究其原因,企业选择私有化部署即时通讯软件完全是出于安全方面考虑。因此,越来越多的企业将眼光望向了本地化…...
学习资源 - 深度学习
文章目录PyTorchNLP语音CV深度学习其它在我过往博客笔记中,每个专项技术,前面我会贴上官网、官方文档、书籍教程等。 但有些topic,资源比较分散;一个博主/up主,也有可能有多个topic的分享,这里分享我遇到的…...
C语言数据结构初阶(1)----时空复杂度
目录 1. 数据结构,算法的概念 2. 算法的效率 2.1 算法复杂度 3. 时间复杂度 3.1 时间复杂度的概念 3.2 大O的渐进表示法 3.3 小试牛刀 4. 算法的空间复杂度 4.1 小试牛刀 1. 数据结构,算法的概念 数据结构(Data Structure)是计算机存储、组织数据…...
vscode SSH 保存密码自动登录服务器
先在win local上拿到秘钥,然后再把这秘钥copy 进服务器 1. 创建 RSA 密钥对 第一步是在客户端机器(通常是您的计算机 win 10)上创建密钥对:打开powershell, 输入 ssh-keygen默认情况下ssh-keygen将创建一个 2048 位 RSA 密钥对…...
VR全景多种玩法打破传统宣传,打造全新云端视界
传统的展示方式只是在进行单方面的表达,不论是图片、视频,都无法让浏览者有参与感,这样的展示宣传效果自然比不上VR全景展示,VR全景基于真实场景来形成三维图像,其沉浸式和无视野盲区的特点让用户更有真实感和沉浸感&a…...
Git 教程
目录1.简介:2.安装Git3.Git 如何工作状态区域4.使用Git5.Git配置5.1 创建仓库 - repository5.2 配置5.2.1 --global5.2.2 检查配置6. 查看工作区的文件状态6.1什么是工作区6.2 如果显示乱码的解决方式7.在工作区添加单个文件8. 添加工作区文件到暂存区9. 创建版本10…...
一种全新的图像滤波理论的实验(二)
一、前言 2021年12月31日,我发布了基于加权概率模型的图像滤波算法的第一个实验,当时有两个关键问题没有解决: 1、出现了大面积的黑色区域,最近考虑把这个算法实际应用在图像和视频的压缩领域,于是通过对程序的分析&a…...
Boost库文档搜索引擎
文章目录综述效果展示去标签化,清理数据构建索引用户查询综述 该项目使用了BS架构,实现了用户对Boost库进行站内搜索的功能, 用户输入关键字使用http协议通过ajax将数据发送给后端服务器,后端进行分词, 通过倒排索引…...
Linux中安装JDK
Linux中安装JDK一 、下载JDK包1、下载网址2、往下翻,找到 java83、继续往下翻找到要下载的版本 64位linux版本二 上传jdk安装包三 开始安装整体过程1、解压文件2、查看解压文件3、进入解压文件夹确认4、配置环境变量5、重新加载环境变量6、确认安装成功一 、下载JDK…...
宝塔面板公网ip非80端口非443端口部署ssl
有不少人使用家用宽带,虽然申请下来了公网ip,但是运营商封了80与443端口,但仍想使用ssl证书 一、仅封80端口 1、先在宝塔面板里创建网站,域名为test.xxx.cn:8085 2、再到域名运营商做A记录解析,此时可以通过http://…...
手撕八大排序(上)
排序的概念及其引用: 排序的概念: 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有…...
clickhouse 怎么统计每天0点到10点的某个字段的数据量
比喻:统计最近一周0点到10点期间每天id的数量 日期:2023-03-23 09:02:22 日期全是这种格式 第一步先把日期转小时:先把小于10小时的查出来 toHour(card_time)<10 select toDate(t.dates) as dates,sum(t.count) as count from ( se…...
[qiankun]-图片加载问题
[qiankun]-图片加载问题开发版本图片加载报错现象描述分析解决方案base64的展示格式静态资源的展示方式取消hash的取值方式,并在主应用中添加图片设置图片的绝对路径根据环境动态设置图片的绝对路径nginx转发方式开发版本 "vue": "^3.2.45", &…...
关于upstream的八种回调方法
1 creat_request调用背景:用于创建自己模板与第三方服务器的第一次连接步骤1) 在Nginx主循环(ngx_worker_process_cycle方法) 中,会定期地调用事件模块, 以检查是否有网络事件发生。2) 事件模块…...
0303泰勒公式-微分中值定理与导数的应用
文章目录1 引入2 泰勒中值定理2.1 泰勒多项式3.2 泰勒中值定理13.3 泰勒中值定理22.4 误差估计4 麦克劳林公式5 常见麦克劳林公式6 泰勒公式相关例题6.1 将函数展成指定的泰勒公式6.1.1 公式法6.1.2 间接展法(变量替换)6.2 利用泰勒公式求极限6.3 确定无…...
日常运维基础命令
commandexplainps -f -u user_name显示指定用户的进程ps aux --sort-pcpu,pmem先以cpu使用量进行排序,cpu使 用一样,以内存使用率排序ps -ef --forest显示ACLII进程数ps --ppid 28208显示父进程的子进程ps -p 14447 -L显示进程的线程ps -e -o pid&#x…...
人员行为识别系统 TensorFlow
人员行为识别系统人员行为识别系统通过TensorFlow深度学习技术,人员行为识别算法对画面中区域人员不按要求穿戴、违规抽烟打电话、睡岗离岗以及作业流程不规范实时分析预警,发现违规行为立即抓拍告警。深度学习应用到实际问题中,一个非常棘手…...
ES-倒排索引BKD原理skiplist
1.Elasticsearch数据存储结构FST、skiplist、BKD-tree、LSM-tree Elasticsearch数据结构存储流程_善思的博客-CSDN博客_elasticsearch 数据结构 number?keyword?傻傻分不清楚 - Elastic 中文社区 ElasticSearch实战(六)-Skip List 跳表算法…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
