VO,BO,PO,DO,DTO,POJO的区别

目录

VO (View object) 视图对象

DTO (data transfer object) 数据传输对象

VO和DTO的区别

PO(persistent object)持久对象

Entity 实体类

BO(Business Object) 业务对象

DO (Domain Object) 领域对象

pojo( plain ordinary java object​​​)简单无规则java对象


先看业务图,了解一下

  • 用户提交请求(可能是填写表单),表单的数据在展示层被匹配为 VO。
  • 服务层把 VO 转换为服务层对应方法所要求的 DTO,传送给服务层。
  • 服务层首先根据 DTO 的数据构造一个 DO (或重建),调用 DO 的业务方法完成具体业务。
  • 服务层把 DO 转换为持久层对应的 PO(一般使用 ORM 工具),调用持久层的持久化方法,把 PO 传递给它,完成持久化操作。

对于一个逆向操作,如读取数据,也是用类似的方式转换和传递。

VO (View object) 视图对象


    VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,这就叫VO, VO主要的存在形式就是js里面的对象(也可以简单理解成json)


DTO (data transfer object) 数据传输对象

    dto一般是一个业务流程后产生的数据对象,返回给业务调用方,在多团队协作中,团队之间用微服务相互调用,这个时候接口返回给别的团队java接口的数据对象就是dto,而给http前端用的对象是vo。

VO和DTO的区别


        主要有两个区别:
                一个是字段不一样,VO根据需要会删减一些字段
                另一个是值不一样,VO会根据需要对DTO中的值进行展示业务的解释

举个简单的例子 DTO可能是这样的

{
    "gender":"1", 
    "age":35 
} 

对于业务一来说只需要性别,而且因为是一个古风聊天室,也不能直接展示1,因此经过业务解释业务一的VO是

{ 
    "gender":"男" 
} 

PO(persistent object)持久对象


           代表持久层对象的意思,对应数据库中表的字段,数据库表中的记录在java对象中的显示状态,最形象的理解就是一个PO就是数据库中的一条记录。


Entity 实体类


         常用实体类,基本和数据表一一对应,一个实体一张表。

        通常PO里面除了get,set之外没有别的方法
对于PO来说,数量是相对固定的,一定不会超过数据库表的数量,等同于Entity,这俩概念是一致的。


BO(Business Object) 业务对象

        BO就是PO的组合,简单的例子比如说PO是一条交易记录,BO是一个人全部的交易记录集合对象。

        复杂点儿的例子PO1是交易记录,PO2是登录记录,PO3是商品浏览记录,PO4是添加购物车记录,PO5是搜索记录,BO是个人网站行为对象。

DO (Domain Object) 领域对象

        DO(Domain Object)这个等同于上面的BO

pojo( plain ordinary java object​​​简单无规则java对象


    纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法。
    可以转化为PO、DTO、VO;比如POJO在传输过程中就是DTO。

系统和系统的复杂度不同,协作水平不同,完全没有必要教条主义,这些概念全上
上哪些概念,省哪些,我给一些实际建议
1,PO这个没法省,不管叫PO还是Entity,怎么着都得有
2,一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行
3,VO是可以第一个优化掉的,展示业务不复杂的可以压根儿不要,直接用DTO

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

what_2018

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值