快速了解开发过程中VO、DTO、BO、 DO、PO、POJO、Entity的概念、区别、作用

目录

​前言

VO(Value Object,值对象)

DTO(Data Transfer Object,数据传输对象)

BO(Business Object,业务对象)

DO(Data Object,数据对象)

PO(Persistent Object,持久化对象)

POJO(Plain Old Java Object,简单老式Java对象)

Entity(实体类)


前言

        在Java中,VO、DTO、BO、DO、PO、POJO、Entity都是常见的数据对象类型,它们各自有不同的概念、区别和作用。

下面我来逐个解释,走你~~~

VO(Value Object,值对象)

  1. 概念:VO是用于表示视图(View)或界面上的数据对象,通常用于前端与后端交互的数据传递。
  2. 区别:VO与数据库表的字段一一对应,并且不包含业务逻辑,只包含属性及其对应的getter和setter方法。
  3. 作用:VO主要用于前端展示数据,将多个数据字段封装成一个对象,简化数据传递和展示。

DTO(Data Transfer Object,数据传输对象)

  1. 概念:DTO也是用于数据传递的对象,但它通常用于服务层和控制层之间的数据传输。
  2. 区别:DTO与业务逻辑相关,可能包含一些数据处理方法,例如计算、转换等。
  3. 作用:DTO用于封装业务逻辑相关的数据,并进行数据传递,解耦服务层和控制层。

BO(Business Object,业务对象)

  1. 概念:BO是用于表示业务逻辑对象,包含了业务逻辑和数据处理方法。
  2. 区别:BO通常用于业务层,封装了业务处理的逻辑,对外提供服务接口。
  3. 作用:BO负责处理业务逻辑,执行业务操作,是业务层的核心对象。

DO(Data Object,数据对象)

  1. 概念:DO用于表示数据库表中的记录对象,通常与数据库表的字段一一对应。
  2. 区别:DO是与持久层(数据库)相关的对象,通常包含数据库操作的方法。
  3. 作用:DO用于封装数据库表的数据,提供数据持久化操作的接口。

PO(Persistent Object,持久化对象)

  1. 概念:PO是持久化对象,它表示数据库中的一条记录。
  2. 区别:PO与DO的概念类似,也是与数据库相关的对象,但通常更加偏向于ORM(对象-关系映射)框架的实体对象。
  3. 作用:PO用于映射数据库表的结构,通过ORM框架进行数据库操作。

POJO(Plain Old Java Object,简单老式Java对象)

  1. 概念:POJO是一种简单的Java对象,没有任何特殊限制和要求,不继承特定的类或实现特定的接口。
  2. 区别:POJO是一种通用的概念,可以是任何普通的Java对象,不局限于特定的应用场景或用途。
  3. 作用:POJO用于表示普通的数据对象,没有业务逻辑,可用于各种不同的场景。

Entity(实体类)

  1. 概念:Entity也是用于表示数据库表的对象,通常是ORM框架中的实体类,与数据库表的字段一一对应。
  2. 区别:Entity是一种特定于ORM框架的概念,用于映射数据库表的结构。
  3. 作用:Entity用于表示数据库中的实体对象,通过ORM框架进行数据库操作。

        下面我画一个简单的图示,用于说明VO、DTO、BO、DO、PO、POJO、Entity之间的关系: 

在这个图示中:

  • Entity 表示数据库表的实体类,与数据库的字段一一对应,通过ORM框架进行映射。
  • PO(Persistent Object)和 DO(Data Object)是与数据库相关的对象,分别表示持久化对象和数据对象,用于数据的持久化和数据库操作。
  • VO(Value Object)和 DTO(Data Transfer Object)是用于数据传输的对象,分别用于前端与后端的数据传递以及服务层与控制层之间的数据传输。
  • BO(Business Object)是业务对象,负责封装业务逻辑和数据处理方法。
  • POJO(Plain Old Java Object)是一个通用的概念,表示普通的Java对象,不具备特定的业务逻辑或数据处理方法。

非常的实用,喜欢的小伙伴可以动动你们发财的小手,给博主一个小小的点赞或者关注,就是对博主最大的鼓励,爱你们哦~~

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

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

相关文章

OpenCV从入门到精通实战(六)——多目标追踪

基于原生的追踪 使用OpenCV库实现基于视频的对象追踪。通过以下步骤和Python代码,您将能够选择不同的追踪器,并对视频中的对象进行实时追踪。 步骤 1: 导入必要的库 首先,我们需要导入一些必要的Python库,包括argparse、time、…

三级等保安全解决方案——实施方案

实施方案设计 本方案将依照国家有关信息安全建设的一系列法规和政策,为电台建立体系完整、安全功能强健、系统性能优良的网络安全系统。以“统一规划、重点明确、合理建设、逐步强化”为基本指导原则。根据电台网络系统不同信息的重要性调整保护策略,不欠…

SpringBoot项目创建,详细流程

一、前言 Spring Boot是一个开源的Java框架,由Pivotal团队(现为VMware旗下)开发,通过提供默认配置和一系列启动器(starters)来简化项目配置,使得开发者能够快速启动和运行Spring应用程序。 ‍ …

K8s 部署 elasticsearch-7.14.0 集群 及 kibana 客户端

一、K8s 部署 elasticsearch-7.14.0 集群 安装规划 组件replicas类型es3StatefulSetkibana1Deployment 使用 k8s 版本为:v1.18.0 。 本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创…

国内首款千亿参数MoE模型APUS-xDAN-4.0:性能逼近GPT-4,可在4090显卡上运行

前言 随着人工智能技术的快速发展,模型参数的数量已成为衡量其复杂性和处理能力的重要指标。近日,国内科技企业APUS与AI创企新旦智能联合宣布,成功开源了国内首个千亿参数的混合专家模型(MoE),APUS-xDAN-4…

锁策略和死锁问题

锁策略 乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁 vs 互斥锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁死锁死锁产生的必要条件如何简单的解决死锁问题 小结 这里不是描述的某个特定锁,而是描述的锁的特性,描述的是"一类锁". 乐观锁 vs 悲观…

Java配置环境变量的过程

第一步:先找到你下载java的文件夹。 第二步:点击它进入看到新的文件夹继续点击。 第三步:点击bin文件。 第四步:点进去bin文件之后复制上述文件的地址。 第五步:回到你的电脑位置右键鼠标点击空白位置出现属性点进去 第…

设计模式胡咧咧之策略工厂实现导入导出

策略模式(Strategy Pattern) 定义: 定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。 本质: 分离算法,选择实现 应用场景 何时使用 一个系统有许多类,而区分他们的只是他们直接…

复合机器人在磁钢上下料中的应用及其优势分析

复合机器人是一种集成了移动机器人和工业机器人功能的设备,其独特之处在于拥有“手、脚、眼、脑”的综合能力,从而实现了更高的灵活性和操作效率。在磁钢上下料的应用场景中,复合机器人能够发挥显著的优势。 首先,复合机器人可以根…

Photomator 3.3.5 (macOS Universal) - 照片编辑软件

Photomator 3.3.5 (macOS Universal) - 照片编辑软件 适用于 Mac、iPhone 和 iPad 的终极照片编辑器 请访问原文链接:https://sysin.org/blog/photomator/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Photomat…

计算机网络 -- 网络编程基础

一 学习准备 1.1 IP地址 在 前文中我们提到过: IP 是全球网络的基础,使用 IP 地址来标识公网环境下主机的唯一性,我们可以根据 目的IP地址 进行跨路由器的远端通信。 但是我们也提到了,通过 IP 地址,只能寻找到目标主机&#xff…

视频质量度量VQM算法详细介绍

视频质量评价 视频质量评价(Video Quality Assessment,VQA)是指通过主观、客观的方式对视频图像的内容、画质等,进行感知、衡量与评价。 ITU definations subjective assessment: the determination of the quality or impairment of programme-like pictures presented…

【代码随想录】【动态规划】day48:打家劫舍

打家劫舍1 def rob(self, nums):""":type nums: List[int]:rtype: int"""# 分为两个情况,偷还是不偷,# dp[i]为考虑到第i个房间时的最大值if len(nums) 0: # 如果没有房屋,返回0return 0if len(nums) 1: #…

【 书生·浦语大模型实战营】作业(五):LMDeploy 量化部署

【 书生浦语大模型实战营】作业(五):LMDeploy 量化部署 🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系…

Linux debian gdb dump

1.开发背景 记录 debian 下应用程序崩溃调试方法 2.开发需求 程序越界可以定位到越界的位置附近 3.开发环境 debian 操作系统,如果不支持需要查看是否存在对应的可执行文件 4.实现步骤 4.1 设置 dump 输出大小 ulimit -c unlimited # 设置输出大小 生成core 文…

【QT+OpenCV】车牌号检测 学习记录 遇到的问题

【QTOpenCV】车牌号检测 学习记录 首先在QT里面配置好OpenCV .pro文件中加入: INCLUDEPATH G:/opencv/build/include LIBS -L"G:/opencv/build/x64/vc14/lib"\-lopencv_core \-lopencv_imgproc \-lopencv_highgui \-lopencv_ml \-lopencv_video \-lo.c…

Linux下SPI设备驱动实验:使用内核提供的读写SPI设备中的数据的函数

一. 简介 前面文章的学习,已经实现了 读写SPI设备中数据的功能。文章如下: Linux下SPI设备驱动实验:验证读写SPI设备中数据的函数功能-CSDN博客 本文来使用内核提供的读写SPI设备中的数据的API函数,来实现读写SPI设备中数据。 …

HTML5+JavaScript实现本地视频/音频播放器

HTML5JavaScript实现本地视频/音频播放器 HTML5 提供了本地视频和音频播放器的支持&#xff0c;通过 <video> 和 <audio> 标签&#xff0c;这些标签支持多种媒体格式&#xff0c;并且可以通过 JavaScript 进行控制&#xff0c;实现功能比较完整的本地视频音频播放器…

MySQL 8.0 新特性之 Clone Plugin

个人感觉&#xff0c;主要还是为 Group Replication 服务。在 Group Replication 中&#xff0c;如果要添加一个新的节点&#xff0c;这个节点差异数据的补齐是通过分布式恢复&#xff08; Distributed Recovery &#xff09;来实现的。 在 MySQL 8.0.17 之前&#xff0c;只支…

【数据结构】队列(链表模拟队列)

学习本章节必须具备 单链表的前置知识&#xff0c; 建议提前学习&#xff1a;点击链接学习&#xff1a;单链表各种功能函数 细节 详解 本章节是学习用 单链表模拟队列 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff…