po、bo、do、dto、vo相关图形

本文详细解析了JavaWeb开发中的VO(ViewObject)、DTO(DataTransferObject)、DO(DomainObject)和PO(PersistentObject)的概念及它们在三层架构中的角色。VO用于展示层,DTO作为服务层与展示层间的数据传输,BO封装业务逻辑,DO代表业务实体,而PO则与数据库表结构对应。理解这些对象的区别对于优化架构和提升开发效率至关重要。
摘要由CSDN通过智能技术生成

图1、2:基于Springmvc、RPC的三层架构角度

图3、4:基于struts2的三层架构角度

图5:基于mybatis三层构架角度

 图6:基于servlet的三层构架角度

图7:信产业务

 图8:其它


        看着这图就比较复杂了,下面是我的简单看法,因为每个公司都有自己的规范或者要求,尽量多问问同事 :

  1. VO(View Object),视图对象。用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
    1. 前到后: 用户发出请求(可能是填写表单),比如前端表单的数据在展示层(XxxAction/XxxController)被匹配为XxxVO.java。
    2. 后到前:后端返回个前端的对象,可以 XxxVO.java
  2. DTO(Data Transfer Object),数据传输对象。这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
    1. (XxxAction/XxxController)把VO转换为服务层(XxxServiceImpl.java对应方法参数所要求的DTO,传送给服务层(如XxxServiceImpl.java)。
  3. BO(Business Object)业务对象。封装对象、复杂对象 ,里面可能包含多个类;
    1. 主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象
      比如一个简历,有教育经历、工作经历、社会关系等等。
      我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
      建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
      这样处理业务逻辑时,我们就可以针对BO去处理。
  4. DO(Domain Object),领域对象。就是从现实世界中抽象出来的有形或无形的业务实体。
    1. 首先,服务层(XxxServiceImpl.java根据方法参数DTO的数据构造(或重建)出一个DO;然后,调用DO的业务方法完成具体业务。
  5. PO(Persistent Object),持久化对象/数据。它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。
    1. mybatis生成的dao表实体对象,可以 XxxPO.java

参考:

        开发中DTO,VO的解释 - 微笑点燃希望 - 博客园 (cnblogs.com)

        VO、DTO、DO、PO之间关系 - - ITeye博客 

        架构设计(15):Java顶层工程结构规范和浅析VO、DTO、DO、PO - it610.com

        面向服务体系架构的业务组件模型 - Java EE - 软件开发管理 - 深度开源 (open-open.com)

        领域驱动模型VO、DTO、DO、PO 概念及其区别-51CTO.COM 

        POJO/PO/Bean/JavaBean/PO/DTO/VO/BO的区别和联系(文字最多)

        bo dto java vo_PO、VO、BO,JavaWeb中的这几个“O”,你都了解吗 - it610.com

        PO BO VO DTO POJO DAO DO 令人迷惑的Java概念 - liuyiyuan - 博客园 (cnblogs.com)

        VO BO DTO PO怎么理解使用?-H5W3 

        一篇文章讲清楚VO,BO,PO,DO,DTO的区别 - it610.com 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值