Javaweb中PO BO VO DTO POJO DAO DO概念理解

1. 概念及理解

  PO、DTO、VO、BO都叫POJO,就是个简单的java对象。这些概念用于描述对象的类型;由于java是面向对象的语言;程序的世界就是各个对象之间的“交互”;在交互的过程中会存在多个层次,每个层次中所拥有的内容都是不一样的;

  • PO(Persistant Object)持久化对象。

    用于表示数据库中的一条记录映射成的java对象。PO仅仅用于表示数据,没有任何数据操作。通常遵守Java Bean的规范,用于getter/setter方法。可以理解是一个PO就是数据库中的一条记录;可以理解某个事物依赖的原始数据;好处是可以将一条记录作为一个对象处理,可以方便转化其他对象。

  • BO(Business Object)业务对象

    封装对象、复杂对象,里面可能包含多个类,主要作用是把业务逻辑封装为一个对象,常常封装了对DAO、RPC等的调用,可以进行PO与VO/DTO之间的转换。BO通常位于业务层,要区别于直接对外提供服务的服务层。BO提供了基本业务单元的基本业务操作,在设计上属于被服务层业务流程调用的对象,一个业务流程可能需要调用多个BO来完成。

    比如一个简历,有教育经历、工作经历、社会关系等等。我们可以把教育经历对应一个PO、工作经历对一个PO、社会关系对应一个PO。建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这里处理业务逻辑时,我们就可以针对BO去处理。

  • VO(View Object)表现对象

    用于表示一个与前端进行交互的java对象。这里的VO只包含前端需要展示的数据即可,对于前端不需要的数据,比如数据创建和修改的时间等字段,出于减少传输数据量大小和保护数据库结构不外泄的目的,不应该在VO中体现出来。通常遵守Java Bean的规范,拥有getter/setter方法。

    视图对象,用于展示层。VO的作用是把某个指定页面(或组件)的所有数据封装起来。而不用做前端WEB页面调用后端的是传数据。

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

    这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层(Controller)和服务层(Service)之间的数据传输对象。

    前端调用时传输;也可理解成”上层“调用时传输;DTO一般是前端和后端以各种方式传递数据

  • DAO (Data access object)数据访问对象

    主要用来封装数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO;用于表示一个数据访问对象。使用DAO访问数据库,包括插入、更新、删除、查询等操作,与PO一起使用。DAO一般在持久层,完全封装数据库操作,对外暴露的使得上层应用不需要关注数据库相关的任何信息。

  •  DO (Domain Object)  领域对象

    就是从现实世界中抽象出来的有形或无形的业务实体。一般和数据中的表结构对应。

【参考资料】

https://blog.csdn.net/uestcyms/article/details/80244407  Java中常见的对象类型简述(DO、BO、DTO、VO、AO、PO)

https://www.zhihu.com/question/39651928  PO BO VO DTO POJO DAO DO这些Java中的概念分别指一些什么?

https://www.hollischuang.com/archives/553 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念

原文地址:https://www.cnblogs.com/swordfall/p/13938122.html