POJO PO BO DO DTO VO 区别与联系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mingyundezuoan/article/details/82926809

POJO PO BO DO DTO VO


概述

缩写 全称 中文 功能 说明
POJO plain ordinary java object 无规则简单java对象 中间对象,与其他对象转换
PO persistent object 持久对象 数据对象对应数据库中的entity
BO business object 业务对象 封装业务逻辑对象
VO value object / view object 表现层对象 封装视图层对象
DTO data transfer object 数据传输对象 跨进程或远程传输
DO domain object 领域对象 从现实世界中抽象出来的有形或无形的业务实体
DAO data access object 数据访问对象 封装对数据库访问对象

问题

  • 为什么项目中要存在多种对象,多种对象直接需要相互转换,是否无用?
    • 举例:数据插入操作
      • HTTP:
        • (Controller 层 )VO 对象 --> (Service 层) BO 对象 --> (DAO 层) PO 对象 --> DAO 对象
      • RPC :
        • (RPC 接口)DTO 对象 --> --> (Service 层) BO 对象 --> (DAO 层) PO 对象 --> DAO 对象
    • 回答:
      • 世界上有大狗(可以看家护院)的存在也有小狗存在的必要,没有一种事务的存在是没有理由的
      • 代码中不同的层次需要使用不同的对象,使用不同的对象是为了更好的理解业务及解决问题
        • 举例:
          • PO / DO 对象通常对应数据表实体映射对象;如果没有BO对象,此时业务需求需要将时间格式化后展示,需要在PO类中增加属性,但增加的属性却不是表中应有的字段,使PO类的含义发生了变化
          • 如设计活动,活动实体是一张表,活动页面样式、活动优惠等等又是一张表,在将数据返给前端时,前端不需要知道后端是几张表的实现,只需要知道解析这个对象中的相关属性即可;此时需要BO对象来中转,BO对象对应多个PO对象
      • 有这种疑问通常是BO与PO对象的属性完全没有区别,此时需要考虑程序业务逻辑,是否需要将查询结果全部返回给调用方

参考资料

猜你喜欢

转载自blog.csdn.net/mingyundezuoan/article/details/82926809