代码开发中VO,BO,PO,DO,DTO是什么

news2025/2/13 18:02:11

代码开发中VO,BO,PO,DO,DTO是什么

MVC的简单定义:

M层负责与数据库打交道;

C层负责业务逻辑的编写;

V层负责给用户展示(针对于前后端不分离的项目,不分离项目那种编写模版的方式,理解V的概念更直观)。

而我们今天要说的VO,BO,PO,DO,DTO呢,就是穿梭在这M、V、C层之间的实体传输对象。‘’

  • VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

  • DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,更符合泛指用于展示层与服务层之间的数据传输对象。

  • BO(Business Object):业务对象,把业务逻辑封装为一个对象,这个对象可以包括一个或多个其它的对象。

  • PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

  • DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

 

如果项目比较小,是一个简单的MVC项目,又是单兵作战,我不建议使用VO,BO,PO,DO,DTO,直接用POJO负责各个层来传输就好,因为这种项目的“目的地”是快速完成。

而我们更多的时候,是持续迭代的团队协作项目,这个时候我们就建议用VO,BO,PO,DO,DTO,而且团队内要达成共识,形成一个标准规范

  1. 业务复杂,人员协同性要求高的场景下,这些规范性的东西不按着来虽然不会出错,程序照样跑,但是遵守规范会让程序更具扩展性和可读性;

  2. 让类语义更明确,很容易知道类的含义;

其实就是提升项目的可扩展性可维护性可阅读性

提升这些性能的尽头是经济效益

团队规范的尽头能提升项目的可扩展性可维护性可阅读性,从而降低bug率。

另附这些概念命名规范:

  • 数据对象:xxxPO,xxx即为数据表名。(也可DO)

  • 数据传输对象:xxxDTO,xxx为业务领域相关的名称。

  • 展示对象:xxxVO,xxx一般为网页名称。

  • 业务对象:xxxBO,xxx是业务名称。

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

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

相关文章

一、微机保护装置的典型结构

微机型保护装置实质上是一种依靠单片微机智能地实现保护功能的工业控制装置。一般典型的微机保护结构是由五个部分构成的,即信号输入电路、单片微机系统、人机接口部分、输出通道回路及电源部分,如图1-l所示。 (一)信号…

多线程之基础

写在前面 本文看下多线程基础相关内容。 1:线程基础分析 1.1:摩尔定律失效 戈登.摩尔,英特尔公司的创始人之一,其发现了一个计算机的发展规律,即,处理器的性能每24个月就会翻一倍,这就是摩尔…

Vintage的变体与解读应用

Vintage在风险管理中有很多变体,通常分为以下四类: 1.根据选取切片数据时间不一样,可划分为Month end(月末)与Cycle end(期末)两种。 说明: **Month end:**选取切片数…

基于自适应高斯混合的稀疏注释语义分割

文章目录 Sparsely Annotated Semantic Segmentation with Adaptive Gaussian Mixtures摘要本文方法GMM FormulationTraining with AGMM 实验结果 Sparsely Annotated Semantic Segmentation with Adaptive Gaussian Mixtures 摘要 稀疏注释语义分割(SASS&#xf…

给图片添加水印的最简单方法

给图片添加水印的最简单方法在数字化时代,图片广泛应用于社交媒体、网站、电商平台等各种场景中。然而,由于互联网分享的便捷性,图片的盗用问题也越来越严重。为了保护图片版权,给图片添加水印已经成为一个非常必要和重要的步骤。…

参与赢大奖!阿里云机器学习平台PAI助力开发者激发AIGC潜能

近年来,随着海量多模态数据在互联网的爆炸性增长和训练深度学习大模型的算力大幅提升,助力开发者一站式快速搭建文生图、对话等热门场景应用,阿里云机器学习平台PAI特推出AIGC加油包,为广大开发者加油助力激发AIGC潜能&#xff0c…

OJ管理员如何进行添加题目

OJ系统简介 Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C) 源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提…

手把手教你进行Mysql条件查询操作

关注“Java架构栈”微信公众号,回复暗号【Java面试题】即可获取大厂面试题 从今天开始,健哥会带各位小伙伴开始学习数据库技术,这是Java开发中必不可少的一部分内容,也是非常重要的技术。本系列教程由浅入深,全面讲解数…

CentOS 停服倒计时,如何打造安全好用的 Linux 系统?

导读近年来,操作系统在国内的讨论极其热烈,也备受各方关注,操作系统在开发者圈中的重要性越来越高。毋庸置疑,对于众多的开发者来说,选择合适的操作系统对于开发效率、代码质量和个人发展都有着非常重要的影响。CSDN 作…

【Protobuf速成指南】oneof类型的使用

文章目录 2.3 oneof 类型一、基本认识二、 3.2 oneof相关函数三、Contact2.3 改写 2.3 oneof 类型 本系列文章将通过对通讯录项目的不断完善,带大家由浅入深的学习Protobuf的使用。这是Contacts的2.3版本,在这篇文章中将带大家学习Protobuf的 oneof 语关…

医院监控4大难点如何破解?这个方法太顶了

在医院环境中,许多重要的设备对于病人的诊断、治疗和监护至关重要。为了确保这些设备的正常运行和安全性,动环监控系统可以发挥关键作用。 客户案例 四川某大型综合医院引入了动环监控系统来监控其重要设备,如手术室设备、监护设备和医疗影像…

【Android自动化测试】Ui Automator技术(以对QQ软件自动发说说为例)

文章目录 一、引言二、了解(Android官方文档)1、UiDevice 类2、UI Automator API3、UI Automator 查看器 三、使用1、依赖2、代码 一、引言 描述:UI Automator 是一个界面测试框架,适用于整个系统上以及多个已安装应用间的跨应用…

使用Unity开发一个游戏类型的区块链 [独立区块链]

Arouse Blockchain [Unity独立区块链] 这是一个学习性质的项目,使用了Unity进行独立区块链游戏的开发。使用此项目,将默认你有一定的Unity基础,如果你是Unity小白,可以先学习Unity,B站有大量的教材。 内容列表 项目的状…

【RV1126】按键中断--使用输入子系统事件方式

文章目录 选择GPIO修改设备树修改驱动源码probe:增加外部中断以及定时器服务函数。命令行测试中断确定按键的输入子系统的event使用hexdump命令测试按键实际效果 测试应用程序完整的驱动代码 我使用的是荣品的pro-rv1126。 选择GPIO 结合原理图 决定使用UART1接口 …

SIFT算法分析

引言 尺度不变特征变换(SITF)是传统机器学习算法当中比较难的一个算法,步骤也相对其它传统机器学习算法要更多一些。 使用场景 以上是一个图像拼接的过程,两张图像拼接成一张图,有时候由于镜头限制,不能一…

基于Google breakpad编译构建和使用案例

Googlepad是一款用于程序崩溃时自动生成转储文件(.dmp)的可跨平台开源库。 1.Googlepad代码下载地址: git clone https://chromium.googlesource.com/breakpad/breakpad 如果翻不了墙可以在gitee上下载breakpad模块。 2.Googlepad采用gyp来…

C语言之实用调试技巧(2)

如何写出好(易于调试)的代码 优秀的代码: 1. 代码运行正常 2. bug很少 3. 效率高 4. 可读性高 5. 可维护性高 6. 注释清晰 7. 文档齐全 常见的 coding 技巧: 1. 使用assert 2. 尽量使用const 3. 养成良好的编码风格 4. …

Linux防火墙学习笔记14

firewalld是什么? Firewalld属于动态防火墙,是CentOS7系统中用于对netfilter内核模块用户空间管理工具。 Firewalld仅仅代替了iptables service部分,其底层还是使用iptables作为防火墙规则管理工具。 Firewalld中zone概念及作用&#xff1…

盖茨预言AI助理成标配,AI+RPA打破AI准入高门槛!

根据微软联合创始人比尔盖茨的预测,未来顶级的人工智能公司将会开发一种全新的“个人AI助理”。比尔盖茨表示,“个人AI助理”将会具有出色的功能,可以改变人们的生活方式以及工作方式。无论哪一家公司能够赢得AI助理竞争先机,都会…

耗时半月,终于把CSDN上的Java面试八股文整理成了PDF合集(Java基础+Redis+MySQL+多线程与高并发+JVM+分布式+Spring+微服务)

大家好,最近有不少小伙伴在后台留言,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些程序员了。 这不&#xf…