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

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

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

  1. 含义

    POJO定义的是无规则简单的对象,日常代码分层中POJO会被分为VO、BO、PO、DTO都是典型的POJO,但是BO、DAO一般不是POJO,通过各层POJO的使用,可以提高代码的维护性和可读性。

  2. 五大O的主要使用场景

    • VO(表示层对象)

      前端展示的数据,接口数据返回给前端时需要转为VO,在接口层服务中,将DTO转为VO之后返回给前台

    • BO(业务层对象)

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

      理解:BO对象可以包含一个或者多个其他的对象,例如一个教室里面有桌子、凳子、黑板、垃圾桶等,我们可以将教室看作一个BO,剩下的都看作为一个个PO,这样就可以建立一个对应教室的BO对象处理教室,BO里面就包含了这些PO,在进行业务逻辑处理时,就可以针对BO去处理

    • PO(持久层对象)

      负责存储数据库总提取的数据,不包含对数据的操作;在数据库层中,获取数据库数据存储到PO中,然后转为DTO返回到服务层中

    • DO(领域实体对象)

      两个版本,等同于上面的BO和PO,从现实世界中抽离出来的业务实体

    • DTO(数据传输对象)
      用于表示一个数据传输对象,通常用于不同服务或服务不同分层之间的数据传输

  3. 举例

    • Controller层

      常见的为将DTO转为VO,将Service层传递过来的DTO转为VO表示数据然后返回给前端

    • Service、Manager层

      常见的转换为DO转BO、BO转DTO,对数据进行处理之后返回DTO对象

    • DAO层

      DTO转为换DO,实现与数据库的交互

    • 领域模型定义

      • Entity 表结构实体,对应DO
      • BO业务实体
      • VO视图实体,DTO可共用

相关文章:

  • 【Git版本控制系统】:起步
  • Linux之shell变量
  • LeetCode112 路径总和
  • 红帽认证可以直接考rhce嘛?红帽认证有效期多久?
  • Sora没体验资格?开源项目:Open-Sora,复现类Sora视频生成方案
  • Python库Gym:打开机器学习与强化学习的大门
  • JAVA八股day1
  • 学生时期学习资源同步-1 第一学期结业考试题8
  • 关于BFF
  • Echo框架:高性能的Golang Web框架
  • mysql笔记:19. 主从复制和主主复制
  • 由浅到深认识C语言(6):变量的存储类型
  • VS Code安装Live Server插件搭建web网页结合内网穿透实现公网访问
  • 快速高效地数据分析处理:QtiPlot for Mac中文直装版 兼容M
  • 海豚调度系列之:集群部署(Cluster)
  • SegmentFault for Android 3.0 发布
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【技术性】Search知识
  • 4个实用的微服务测试策略
  • angular2开源库收集
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • css布局,左右固定中间自适应实现
  • CSS实用技巧干货
  • express + mock 让前后台并行开发
  • iOS | NSProxy
  • JavaScript的使用你知道几种?(上)
  • Js基础——数据类型之Null和Undefined
  • Js基础知识(一) - 变量
  • MySQL主从复制读写分离及奇怪的问题
  • PAT A1050
  • Redis在Web项目中的应用与实践
  • SOFAMosn配置模型
  • 阿里云购买磁盘后挂载
  • 搭建gitbook 和 访问权限认证
  • 聚类分析——Kmeans
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 你不可错过的前端面试题(一)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 实现菜单下拉伸展折叠效果demo
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • linux 淘宝开源监控工具tsar
  • Spring Batch JSON 支持
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #pragma once
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (ZT)薛涌:谈贫说富
  • (分布式缓存)Redis分片集群
  • (九)One-Wire总线-DS18B20
  • (离散数学)逻辑连接词
  • (免费分享)基于springboot,vue疗养中心管理系统