首页 > 其他分享 >一文理解什么是DTO、VO、BO、PO、DO,并推荐一款IDEA转换插件

一文理解什么是DTO、VO、BO、PO、DO,并推荐一款IDEA转换插件

时间:2023-06-19 22:35:23浏览次数:38  
标签:DO 插件 DTO 对象 BO VO PO

 

1、什么是DTO、VO、BO、PO、DO、POJO

POJO的定义是无规则简单的对象,在日常的代码分层中pojo会被分为VO、BO、 PO、 DTO。通过各层POJO的使用,有助于提高代码的可读性和可维护性。

概念看似简单,但是想区分好或者理解好也不容易,本文简单梳理一下。

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

在服务间的调用中,传输的数据对象

个人理解,DTO是可以存在于各层服务中(接口、服务、数据库等等)服务间的交互使用DTO来解耦

VO (view object/value object)表示层对象

前端展示的数据,在接口数据返回给前端的时候需要转成VO
使用场景,在接口层服务中,将DTO转成VO,返回给前台

B0(bussines object)业务层对象

主要在服务内部使用的业务对象
主要在服务内部使用的业务对象
使用场景,在服务层服务中,由DTO转成BO然后进行业务处理后,转成DTO返回到接口层

PO(persistent object)持久对象

出现位置为数据库数据,用来存储数据库提取的数据

只存储数据,不包含数据操作

使用场景,在数据库层中,获取的数据库数据存储到PO中,然后转为DTO返回到服务层中

DO(domain object)领域实体对象

DO 现在主要有两个版本:

①阿里巴巴的开发手册中的定义,DO( Data Object)这个等同于上面的PO

②DDD(Domain-Driven Design)领域驱动设计中,DO(Domain Object)这个等同于上面的BO

2、区别

《阿里巴巴Java开发规范》关于领域模型的部分介绍如下:

分层领域模型规约:

DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。
AO(ApplicationObject):应用对象,在Web层与Service层之间抽象的复用对象模型, 极为贴近展示层,复用度不高。
VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传输。

最难理解的是BO,大致这么理解:

BO这个对象可以包括一个或多个其它的对象。

比如一个简历,有教育经历、工作经历、社会关系等等。

我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。

建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,我们就可以针对BO去处理。

3、示例代码

Controller层

此层常见的转换为:DTO转VO,将Services层传过来的DTO转换成VO表示数据返回给前端

public List<UserVO> getUsers(UserQuery userQuery);

Service层、Manager层

此层常见的转换为:DO转BO、BO转DTO

// 普通的service层接口,对数据处理,返回DTO对象

List<UserDTO> getUsers(UserQuery userQuery);

然后在Service内部使用UserBO封装中间所需的逻辑对象

DAO层
此层常见的转换为:DTO转换为DO,与数据库进行交互

List<UserDO> getUsers(UserQuery userQuery);
1
领域模型定义
Entity表结构实体,对应DO
BO业务实体
VO视图实体,DTO可共用
入参封装
○ xxxParam
○ Query xxx Param
○ Save xxx Param
○ Edit xxx Param
○ Remove xxx Param

4、IDEA插件完成转换

1、插件名称:Simple Object Copy

这个插件是收费的,好像是6元(人民币)每年,当然学生、教育机构、公益免费。
可以试用30天,好用不好用试试才知道,先来体验一下吧!

2、安装

安装就不多说了,直接在idea的Plugins应用商店搜索插件名就出来了,然后下载安装就好,安装好后会让重启idea,那就重启呗,重启后选择30天的试用。

3、如何使用

定义方法出入参,出入参就是要转换的实体
光标定位方法内,使用快捷键ALT+INSERT(WIN) 、 command + N(mac) ,或者右键鼠标选择Generate,弹出生成选项框后,选择genCopyMethod,代码就生成好了

结果是这样的:


复杂对象转化展示:


5、结语


通过插件的使用

1、可以节省一个个字段的设置的开发时间

2、避免了漏字段设置,ps:前端同学总是来问为啥字段总是null。

3、而且通过出入参的设计思想去开发,规范了代码,在有特殊请求转化的时候也比较方便。
————————————————

原文链接:https://blog.csdn.net/MacWx/article/details/122618986

标签:DO,插件,DTO,对象,BO,VO,PO
From: https://www.cnblogs.com/onesea/p/17492394.html

相关文章

  • VO,DTO,BO,POJO,PO的概念介绍
     po:1.po:popersistentobject持久对象,持久对象的意思指的是可以从内存中存储到关系型数据库中。2.因此一个po对应的数据库中的每一条记录。pojo:1.pojo:plainordinaryjavaobject无规则简单java对象,对应的是我们代码中的实体类。2.pojo持久化之后就是po了,可以看作一个中......
  • Windows环境下Redis的安装以及Redis Desktop Manager的下载安装
    ————本文介绍了Windows环境下Redis的安装,以及Redis数据库管理工具RedisDesktopManager的下载和安装目录|一、Windows环境下安装Redis||--|--||二、RedisDesktopManager的下载及安装|一、Windows环境下安装Redis下载地址:https://github.com/tporadowski/redis/......
  • docker 安装zookeeper(单机版)
    Docker安装ZK查看本地镜像和检索拉取Zookeeper镜像#查看本地镜像dockerimages#检索ZooKeeper镜像dockersearchzookeeper#拉取ZooKeeper镜像最新版本dockerpullzookeeper:latest#我使用的版本dockerpullzookeeper:3.5.7 创建ZooKeeper挂载目录(数据挂载......
  • 使用Windows自带命令校验文件哈希值
    文章目录CertutilGet-FileHashCertutilCertutil是一个windows预装的CLI程序,主要作用是转储和显示证书颁发机构(CA),配置信息,证书服务,CA组件的备份和还原以及验证证书、密钥对和证书链,它作为证书服务的一部分安装。可用于校验文件MD5、SHA1、SHA256,下载恶意文件和免杀。这里记录如......
  • Windows下载更新powershell
    在使用windows系统默认的powershell时,打开使用的时候一般都会碰到以下这种情况,有新的版本可以尝试使用在powershell中使用命令:$PSVersionTable;可以查看到当前powershell的一些信息安装新版本powershellWindows官方powershell文档:https://aka.ms/pscore6Powershell7.1的官方Git......
  • BUUCTF:[CISCN2019 华东南赛区]Double Secret
    BUUCTF:[CISCN2019华东南赛区]DoubleSecret查看robots.txt无可用信息线索在目录:http://274c1aad-138b-4fe6-9815-8feeaf028127.node3.buuoj.cn/secret尝试传参?secret=发现当字符串长度超过4位的时候,出现报错寻找关键代码这里调用了rc4再通过render_template_string执行,SST......
  • Docker PHP如何安装mysqli扩展
    查找用于安装PHP扩展的命令文件whichdocker-php-ext-install安装mysqli扩展docker-php-ext-installmysqli需要注意的是,docker-php-ext-install命令仅适用于基于PHP的Docker镜像,并且需要与DockerCompose文件一起使用,以便在容器中运行PHP应用程序。......
  • docker基础
    docker: 开源的应用容器引擎.可以给应用和应用需要的环境移植到linux机器上.版本:CE社区版本 EE企业版本,收费的安装docket//1.yum包更新到最新版本yumupdate//2.安装需要的软件包,yum-utils提供yum-config-manager功能,另外2个是devicemapper驱动功能yumin......
  • 什么是 bootstrap ngb modal window?
    Bootstrap是一个流行的开源前端框架,用于构建响应式和移动优先的网站和应用程序。它提供了一套丰富的CSS样式和JavaScript组件,以简化Web开发过程。其中之一是BootstrapModal,它是一个用于创建模态框(Modal)窗口的组件。而"ngb"是指的AngularBootstrap,是将Bootstrap组件集成到......
  • Windows操作系统磁盘碎片整理程序的作用
    Windows操作系统磁盘碎片整理程序的作用是优化硬盘的存储和访问效率,提升系统的整体性能。磁盘碎片是指文件在硬盘上分散存储的情况,导致文件的不连续存储,从而增加了文件读取和写入的时间。磁盘碎片整理程序通过重新组织文件的存储位置,将文件片段整理成连续的空间,以减少磁盘访问的时......