java对象PO、BO、VO、DTO、POJO、DAO、DO概念及其作用

假设数据库中现在有一张有 个属性的student表(sid,name,sex,class,admi_time(入学时间),grad_time(毕业时间))
页面需要显示的数据:sid,name,class

简书:浅析DO、VO、DTO、PO的概念与区别

目录

一、PO(Persistent Object)

二、BO(Business Object)

三、VO(Value/View Object)

四、DTO(Data Transfer Object)

五、POJO(Plain ordinary java object)

六、DAO(Data Access Object)

七、DO(Domain Object)

八、区别

九、命名规则

一、PO(Persistent Object)

持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系。
仅用于表示数据,除了getter/setter之外没有任何操作。通常遵守 Java Bean 的规范。
优点:一个po对象相当于数据库中的一条记录。
PO属性:sid、name、sex、class、admi_time、grad_time

持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。

二、BO(Business Object)

业务对象,主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
常常封装了对 DAO、RPC(远程过程调用) 等的调用,可以进行 PO 与 VO/DTO 之间的转换。
BO 通常位于业务层,要区别于直接对外提供服务的服务层:BO 提供了基本业务单元的基本业务操作。在设计上属于被服务层业务流程调用的对象,一个业务流程可能需要调用多个 BO 来完成。
关于BO主要有三种概念
1 、只包含业务对象的属性;
2 、只包含业务方法;
3 、两者都包含。

业务逻辑:负责系统领域业务的处理,负责逻辑性数据的生成、处理及转换。对所输入的逻辑性数据的正确性及有效性负责,但对输出的逻辑性数据及用户性数据的正确性不负责,对数据的呈现样式不负责。

三、VO(Value/View Object)

表现层用于表示一个与前端进行交互的 java 对象。拥有getter/setter方法。通常遵守 Java Bean 的规范。
优点:用一个VO对象表示一整个页面所需要展示的值,其他不需要的数据不应该放入对象中,减少了数据传输量。
VO属性:sid,name,class

四、DTO(Data Transfer Object)

数据传输对象,主要用于远程调用、不同层之间(通常是view和service之间)等需要大量传输对象的地方。通常遵守 Java Bean 的规范,拥有 getter/setter 方法。
注意:类似于VO。
假设客户端需要获取:sid,name,grad_time,则
DTO属性:sid,name,grad_time
假设客户端需要获取的属性对应于页面输出的内容,则DTO相当于VO。

五、POJO(Plain ordinary java object)

简单java对象

  • 一个POJO持久化以后就是PO;
  • 直接用它传递、传递过程中就是DTO;
  • 直接用来对应表示层就是VO。

六、DAO(Data Access Object)

数据访问对象,使用 DAO 访问数据库,包括增删改查等操作,与 PO 一起使用。DAO 一般在持久层,完全封装数据库操作,对外暴露的方法使得上层应用不需要关注数据库相关的任何信息。

七、DO(Domain Object)

领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。简单来说,就是对现实世界各种业务角色的抽象(例如:user、student)
DO属性:sid、name、sex、class、admi_time、grad_time

八、区别

1. DTO和DO的区别

DO作为对现实世界各种业务角色的抽象,可能会包含一个password的属性,但是DTO作为传输数据,在使用getter方法时不可返回password

2. DTO和VO的区别

VO用于展示页面数据,DTO一般用于在前后端间传输数据;
在VO中性别为男、女,而在DTO中为了传输方便一般使用1(男)、2(女)表示

3. 各种对象的转换图

来源见水印
在这里插入图片描述

九、命名规则

  1. 数据对象:xxxDO,xxx即为数据表名;

  2. 数据传输对象:xxxDTO,xxx为业务领域相关的名称;

  3. 展示对象:xxxVO,xxx一般为网页的名称;

  4. POJO 是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章