当前位置: 首页 > news >正文

PO、BO、VO、DTO、DAO、POJO

文章目录

  • PO(Persistant Object)持久对象
  • DO(Data Object)数据对象
  • AO(Application Object)应用对象
  • BO(Business Object)业务对象
  • VO(Value Object)表现对象
  • DTO(Data Transfer Object)数据传输对象
  • DAO(Data Access Object)数据访问对象
  • POJO(Plain Ordinary Java Object)简单Java对象
  • 实例

PO(Persistant Object)持久对象

PO是持久化对象,用于表示数据库中的一条记录映射成的Java对象,类中应该都是基本数据类型和String,而不是更复杂的类型,因为要和数据库表字段对应。PO仅仅用于表示数据,不对数据进行操作,拥有get和set方法。对象类中的属性对应数据库表中的字段,有多少个字段就有多少个属性,完全匹配。遵循JavaBean规范,拥有get和set方法。如下图所示:
在这里插入图片描述

DO(Data Object)数据对象

数据对象,与数据库表结构一一对应,通过dao层向上传输数据对象,属性和PO中的基本一致。

AO(Application Object)应用对象

在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。

BO(Business Object)业务对象

BO是实际的业务对象,会参与业务逻辑的处理操作,里面可能会包含多个类,用于表示一个业务对象。例如用户可以拥有宠物,在这里把用户对应一个PO、宠物对应一个PO,那么建立一个对应的BO对象来处理用户和宠物的关系,每个BO都包含用户PO和宠物PO,而处理逻辑时针对BO去处理。遵循JavaBean规范,拥有get和set方法。例如:(注:User和Pet都是PO对象,但会放进BO中,形成一个复杂的业务对象。)

但注意,BO又包括了业务逻辑,通常在service层,封装了对DAO层的调用,可以进行PO与VO/DTO之间的转换。

VO(Value Object)表现对象

VO对象主要用于前端界面显示的数据,是与前端进行交互的Java对象,但这里是不用PO传递数据的,因为PO包括数据库表中的所有字段,对于前端来说我们只需要显示一部分字段就可以了,例如我们的用户表user中的password(密码)字段、phone(电话)字段、insert_time(插入时间)字段是没有必要也不能显示在前端界面的。遵循JavaBean规范,拥有get和set方法。

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

数据传输对象是在传递给前端时使用的,如一张表有100个字段,那么对应的PO就有100个属性,但是我们的前端界面只需要显示10个字段,所以我们没必要把所有字段的PO对象传递到客户端,我们只需要把只有这10个属性的DTO对象传递到客户端,不会暴露服务端的表结构,到达客户端后,如果这个对象用于界面表示,那么它的身份就是VO对象。

DTO和VO概念相似,通常情况下字段也基本一致。但有所不同,DTO表示一个数据传输对象,是在服务端用于不同服务或不同层之间的数据传输,例如dao层到service层,service层到web层;而VO是在客户端浏览器显示的表现对象,用于在浏览器界面数据的显示。

DAO(Data Access Object)数据访问对象

DAO是主要封装对数据库的访问,例如UserDao封装的就是对user表的增删改查操作。

通过它可以把POJO持久化为PO,用PO组装出VO和DTO。

DAO一般在持久层,完全封装数据库操作,对外暴露的方法的使得上层不需要关注数据库的相关信息,只需要插入、删除、更新、查询即可。

POJO(Plain Ordinary Java Object)简单Java对象

表示一个个简单的Java对象,而PO、VO、DTO都是典型的POJO,而DAO和BO一般不是POJO,只是提供了一些调用方法。

POJO是DO、DTO、BO、VO的统称。

实例

有一个博客系统,数据库中存储了很多篇博客。我们会做如下设计:

数据库表:表中的博客包括编号、博客标题、博客内容、博客标签、博客分类、博客状态、创建时间、修改时间等。

  • PO:包括编号、博客标题、博客内容、博客标签、博客分类、博客状态、创建时间、修改时间等。(与数据库表中的字段一样。)
  • VO:在客户端浏览器展示的页面数据,博客标题、博客内容、博客标签、博客分类、创建时间、上一篇博客URL、下一篇博客URL。
  • DTO:在服务端数据传输的对象,编号、博客标题、博客内容、博客标签、博客分类、创建时间、上一篇博客编号、下一篇博客编号。
  • DAO:数据库增删改查的方法,例如新增博客、删除博客、查询所有博客、更新博客。
  • BO:基本业务操作,如管理分类、管理标签、修改博客状态等,是我们常说的service层操作。
http://www.lryc.cn/news/127722.html

相关文章:

  • MySQL— 基础语法大全及操作演示!!!(下)
  • Springboot+vue网上招聘系统
  • 奥威BI数据可视化工具:报表就是平台,随时自助分析
  • iPhone(iPad)安装deb文件
  • 手撕单链表
  • Spring-aop特点,专业术语及案例演示
  • 探秘Java的Map集合:键值映射的奇妙世界
  • git权限问题解决方法Access denied fatal: Authentication failed
  • Hands on RL 之 Off-policy Maximum Entropy Actor-Critic (SAC)
  • JavaScript中的this指向,call、apply、bind的简单实现
  • Linux学习之基本指令一
  • appium默认60秒关闭应用的问题
  • Docker 容器内无法使用vim命令 解决方法
  • Django的简介安装与配置及两大设计模式
  • Mybatis分页插件——PageHelper
  • k8s认证详解 k8s证书详解 2023推荐
  • php初解
  • 【C语言】回调函数,qsort排序函数的使用和自己实现,超详解
  • PHP手术麻醉系统源码,自动生成麻醉和护理医疗文书
  • 内网穿透实战应用——【通过cpolar分享本地电脑上有趣的照片:发布piwigo网页】
  • iPhone删除的照片能恢复吗?不小心误删了照片怎么找回?
  • LeetCode--HOT100题(32)
  • SAP MM学习笔记24-以评估收货(评价)和非评估收货(非评价)
  • Hadoop的DataNode无法启动的解决方案
  • re中的match和search有什么区别?
  • 《内网穿透》无需公网IP,公网SSH远程访问家中的树莓派
  • .net连接mysql,提示找不到请求的 .Net Framework Data Provider。可能没有安装
  • 销售自动化管理软件是什么,销售自动化管理软件有什么优势
  • MySQL 函数
  • 爬虫逆向实战(六)--猿人学第四题