PO、VO、DTO

不知道有没有和我一样的职场新人小白有这样的疑惑,为什么一个实体类要有po、vo、dto,分这么多层有必要吗?我之前做项目的时候也接触到了这些分层,今天想写一篇来谈谈我对其的理解。

一. POJO

首先先认识一下POJO,POJO是指普通的Java对象,是一个简单的Java类,通常没有实现特定的接口或继承特定的类。POJO的涉及原则是简单、普通、存粹的Java对象。

POJO对象通常用于封装数据,包含私有字段和公共的getter和setter方法,用于对属性进行读写操作,POJO对象通常不包含业务逻辑,主要用于传输数据、数据存储和数据交换。

以下是开发过程中,POJO的使用场景:

  1. 数据传输:POJO对应用于在不同层之间传输数据,比如在业务逻辑层(service层)和表示层(Presentation层)之间传输数据。
  2. 数据存储:POJO对象用于封装数据库中的数据,通常用于与数据库进行交互的ORM(对象关系映射)
  3. 数据交换:POJO对象用于与外部系统进行数据交换。

二. DTO、VO、PO

DTO

Date Transfer Object:数据传输对象,DTO用于在不同层之间传输数据,通常用于将业务逻辑层的数据传输给表示层或持久层。

引入DTO是为了可以在不同的web服务间传输,因此需要可以序列化,实现serializable接口,还可以把相关的数据都组合到一个对象中,减少网络调用的次数,从而降低网络负载等....

举个例子,一张表中有100个列,那么对应的实体类中有100个属性,但是有一个服务调用只需要其中的10个属性,那么我们就可以创建一个只有10个属性的DTO返回给调用者,避免了数据表结构给客户端,使用数据表结构和调用结构解耦。

VO

View Object:视图对象,用于表示一个与前端进行交互的Java对象。

VO是用来保存Web、swing、android、iOS等一个页面对应的数据,以便显示。

VO和DTO比较像,区别在与当数据是为了在微服务之间进行传输时,我们使用DTO,如果是为了返回给前端进行展示时,我们使用VO。

PO

Persistent Object:持久化对象,用来表示数据库中一条记录映射成的Java对象。

与数据库的表、视图、查询结果的列一一对应,PO仅仅用来展示数据,类中只包含属性和get和set方法,不会有其他修改数据库的方法。

相关推荐
handsome_sai10 分钟前
【Java 线程池】记录
java
大学生资源网1 小时前
基于springboot的唐史文化管理系统的设计与实现源码(java毕业设计源码+文档)
java·spring boot·课程设计
guslegend1 小时前
SpringSecurity源码剖析
java
roman_日积跬步-终至千里2 小时前
【人工智能导论】02-搜索-高级搜索策略探索篇:从约束满足到博弈搜索
java·前端·人工智能
大学生资源网2 小时前
java毕业设计之儿童福利院管理系统的设计与实现(源码+)
java·开发语言·spring boot·mysql·毕业设计·源码·课程设计
JasmineWr2 小时前
JVM栈空间的使用和优化
java·开发语言
Hello.Reader2 小时前
Flink SQL DELETE 语句批模式行级删除、连接器能力要求与实战避坑(含 Java 示例)
java·sql·flink
爱笑的眼睛112 小时前
从 Seq2Seq 到 Transformer++:深度解构与自构建现代机器翻译核心组件
java·人工智能·python·ai
Spring AI学习3 小时前
Spring AI深度解析(10/50):多模态应用开发实战
java·spring·ai
qq_12498707535 小时前
重庆三峡学院图书资料管理系统设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·spring·毕业设计