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方法,不会有其他修改数据库的方法。

相关推荐
xcl09252 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐4 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长4 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn4 小时前
Spring 注解使用详解
java·spring
一条小小yu5 小时前
Spring IoC的理解
java·后端·spring
落魄实习生5 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈5 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白7 小时前
核心功能(Service接口)
java·mybatis
乌暮7 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习