详解前后端交互时PO,DTO,VO模型类的应用场景

news2024/11/18 23:42:48

前后端交互时的数据传输模型

前后端交互流程

前后端交互的流程: 前端与后端开发人员之间主要依据接口进行开发

  • 前端通过Http协议请求后端服务提供的接口
  • 后端服务的控制层Controller接收前端的请求
  • Contorller层调用Service层进行业务处理
  • Service层调用Dao持久层对数据持久化

PO,DTO,VO模型类

DTO(Data Transfer Object)数据传输对象: 用于接口层向业务层之间相互传输数据

PO(Persistent Object)持久化对象: 用于业务层与持久层之间相互传输数据,一个PO类对应数据库中的一张表,每张表对应一个Mapper接口和Mapper的xml映射文件

VO对象: 前端与接口层之间相互传输数据,当用户使用手机端和PC端查询课程信息时查询条件和查询结果可能不同

  • 手机查询: 根据课程状态查询,查询结果只有课程名称和课程状态
  • PC查询: 可以根据课程名称、课程状态、课程审核状态等条件查询,查询结果也比手机查询结果内容多
  • 如果前端接口没有多样性且比较固定,此时可以取消VO只用DTO即可

在这里插入图片描述

Service业务层尽量提供一个业务接口,即使两个前端接口接收的数据和响应的数据不一样

  • 查询条件不同: 此时可以设置多个VO对象
  • 查询结果不同: Service只负责提供一个最全的查询结果,由Controller层进行数据整合

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1270056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何让电脑每天定时自动关机?

如何让电脑每天定时自动关机?电脑已经成为社会生产活动中不可或缺的一种工具,它对于我们每个人都非常的重要,不管是工作、生活还是学习中,我们都需要利用电脑。不过很多小伙伴因为繁忙或者因为其它的事情,导致电脑经常…

linux用户组_创建_删除_修改

2.2.2 用户组 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。 组的类型: 基本组&#x…

编程中常见的技术难题——如何有效地解决编程中常见的技术难题?

文章目录 前言编程的重要性编程中常见的技术难题新手编程常见问题一、变量的命名规范二、语法错误三、逻辑错误四、代码复用五、代码优化 解决技术难题的方法后记 前言 在编写程序的过程中,总会遇到各种各样的技术难题,这些问题常常需要程序员们耗费大量…

第十五届蓝桥杯(Web 应用开发)模拟赛 2 期-大学组(详细分析解答)

目录 1.相不相等 1.1 题目要求 1.2 题目分析 1.3 源代码 2.三行情书 2.1 题目要求 2.2 题目分析 2.3 源代码 3.电影院在线订票 3.1 题目要求 3.2 题目分析 3.3 源代码 4.老虎坤(不然违规发不出来) 4.1 题目要求 4.2 题目分析 4.3 源代码 …

vuepress-----9、PWA

# 9、PWA 使用babel 的插件形式 [vuepress/pwa,{serviceWorker: true,updatePopup: {message: "New content is available.",buttonText: "Refresh"}}]提供 Manifest 和 icons (opens new window) 拷贝到public目录下 发布后出现 service workers [外链图片…

HT for Web (Hightopo) 使用心得(5)- 动画的实现

其实,在 HT for Web 中,有多种手段可以用来实现动画。我们这里仍然用直升机为例,只是更换了场景。增加了巡游过程。 使用 HT 开发的一个简单网页直升机巡逻动画(Hightopo 使用心得(5)) 这里主…

『亚马逊云科技产品测评』活动征文| 基于etcd实现服务发现

提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 背景 etcd 是一个分布式 Key-Value 存储系统&#xff0…

RNN-T Training,RNN-T模型训练详解——语音信号处理学习(三)(选修三)

参考文献: Speech Recognition (option) - RNN-T Training哔哩哔哩bilibili 2020 年 3月 新番 李宏毅 人类语言处理 独家笔记 Alignment Train - 8 - 知乎 (zhihu.com) 本次省略所有引用论文 目录 一、如何将 Alignment 概率加和 对齐方式概率如何计算 概率加和计…

Docker + Jenkins + Nginx实现前端自动化部署

目录 前言一、前期准备工作1、示例环境2、安装docker3、安装Docker Compose4、安装Git5、安装Nginx和Jenkinsnginx.confdocker-compose.yml 6、启动环境7、验证Nginx8、验证Jenkins 二、Jenkins 自动化部署配置1、设置中文2、安装Publish Over SSH、NodeJS(1&#x…

Redis中的缓存穿透、雪崩、击穿(详细)

目录 一、概念 1. 缓存穿透(Cache Penetration) 解决方案: 2. 缓存雪崩(Cache Avalanche) 解决方案: 3. 缓存击穿(Cache Breakdown) 解决方案: 二、三者出现的根本原…

elasticsearch操作

目录 一、mapping映射属性二、索引库的CRUD2.1 创建索引库和映射2.2 查询索引库2.3 修改索引库2.4 删除索引库2.5 总结 三、文档操作3.1 新增文档3.2 查询文档3.3 删除文档3.4 修改文档3.5 总结 四、RestClient操作索引库4.1 初始化RestClient4.2 创建索引库4.3 删除索引库4.4 …

MySQL数据库的安装

MySQL官网:https://www.mysql.com/ 进入下载页面:https://www.mysql.com/downloads/ 选择社区版: 选择MySQL Community Server: 根据自己的需要选择版本。例如选择8.2.0版本: 例如选择Windows (x86, 64-bit), M…

使用Python爬取快手视频与评论(App与Web端分析)

文章目录 1. APP端抓包配置2. APP端抓包分析3. Web端抓包分析4. 爬虫代码实现 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】&#xff1a…

Go 从编译到执行

一、Go运行编译简介 Go语言(也称为Golang)自从2009年由Google发布以来,已成为现代软件开发中不可或缺的一部分。设计者Rob Pike, Ken Thompson和Robert Griesemer致力于解决多核处理器、网络系统和大型代码库所引发的现实世界编程问题。我们…

LeetCode刷题---斐波那契数列模型

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、第N个泰波那契数 题目链接:1137. 第 N 个泰波那契数 题目描述 泰波那契序列Tn定义如下: T00,T11,T2 1,且在n&g…

【SpringCloud原理】OpenFeign原来是这么基于Ribbon来实现负载均衡的

大家好,本文我将继续来剖析SpringCloud中负载均衡组件Ribbon的源码。本来我是打算接着OpenFeign动态代理生成文章直接讲Feign是如何整合Ribbon的,但是文章写了一半发现,如果不把Ribbon好好讲清楚,那么有些Ribbon的细节理解起来就很…

Pycharm2020.3.5激活方式

激活插件链接:https://pan.baidu.com/s/1tPd7V4pKUx0Z6fSKumLjTQ 提取码:lr12 1.pycharm主界面点开设置如下: 2.点击 Plugins 然后依次点击:小齿轮->选择本地安装(下图) 3.找到存放插件的目录&#xf…

系统设计概念:生产 Web 应用的架构

在你使用的每个完美应用程序背后,都有一整套的架构、测试、监控和安全措施。今天,让我们来看看一个生产就绪应用程序的非常高层次的架构。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保我们的代码从存储库经过一系列测试…

用customize-cra+react-app-rewired配置less+css module

1. 安装 npm i less less-loader -D npm i customize-cra-less-loader -D2.添加配置项 //config-overrides.js const { override } require(customize-cra); const addLessLoader require("customize-cra-less-loader");module.exports {webpack: override(addL…

解决VS2019无法正常显示XAML设计界面问题

问题描述 当VS2019配置工程为x64模式时,打开工程中XAML页面可能出现如下错误提示,进而无法正常显示XAML设计界面。 There was an exception when loading the design time assembly C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\16.0_…