详解Java业务领域分层模型中的vo/po/dto/pojo/bo
发布日期:2021-06-30 12:22:34 浏览次数:2 分类:技术文章

本文共 2267 字,大约阅读时间需要 7 分钟。

分层的目的,就是保证复用和相对稳定性!

  • 开局一张图,后文全靠编

VO值对象(Value Object)

new关键字创建,由GC回收。VO是值对象,精确点来说,它是业务对象,存活在业务层,由业务逻辑使用,其存活目的就是给数据提供一个生存地。

主要对应界面显示的数据对象。对于一个WEB页面,用一个VO对象对应整个界面的值。

VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。

PO持久对象(Persisent Object)

向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。

PO是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并简化对象数据与物理数据之间的转换。

PO的属性跟数据库表字段一一对应。

Hibernate里的实体bean就是个PO,也叫POJO。

PO对象需要实现序列化接口。

PO是持久化对象,它只是将物理数据实体的一种对象表示。

为什么需要它?因为它可以简化我们对于物理实体的了解和耦合,简单地讲,可以简化对象的数据转换为物理数据的编程。

VO是什么?它是值对象,准确地讲,它是业务对象,是生活在业务层的,是业务逻辑需要了解,需要使用的,再简单地讲,它是概念模型转换得到的。

首先说PO和VO吧,它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(当然我是指他们的属性)。正因为这样,PO独立出来,数据持久层也就独立出来了,它不会受到任何业务的干涉。又正因为这样,业务逻辑层也独立开来,它不会受到数据持久层的影响,业务层关心的只是业务逻辑的处理,至于怎么存怎么读交给别人吧!不过,另外一点,如果我们没有使用数据持久层,或者说没有使用hibernate,那么PO和VO也可以是同一个东西,虽然这并不好。


PO(persistant object) 持久对象

在o/r映射的时候出现的概念。

通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。

最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。
PO中应该不包含任何对数据库的操作。

  • 好处
    把一条记录作为一个对象处理,方便的转为其它对象。

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

常用于远程调用等传输对象的地方,作为请求或相应对象。

比如数据库表有100个字段,其PO就有100个属性,但界面上只需显示10个字段,客户端请求获取数据,没有必要传递整个PO,可以只用这10个属性的DTO传递结果响应给客户端,也不会暴露数据库表结构。到达客户端以后,如果用这个对象来对应界面显示,那时转为VO。

BO(Business Object) 业务对象

从业务模型角度看,见UML元件领域模型中的领域对象。

通过调用DAO方法,结合PO,VO进行业务操作。把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。

比如一个简历,有

  • 教育经历 ======> PO
  • 工作经历 ======> PO
  • 社会关系 ======> PO

建立一个对应简历的BO对象处理简历,每个BO包含这些PO。这样处理业务逻辑时,就可以针对BO处理。

POJO(plain ordinary java object)

简单无规则java对象

纯的传统意义的java对象。就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。最基本的Java Bean,只有属性字段及setter和getter方法!

范围上看 POJO 包含了 PO。

VO(value object) 值对象

常用于业务层间数据传递,和PO一样仅包含数据。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务需要。同DTO,在web上传递。

TO(Transfer Object),数据传输对象

在应用程序不同tie(关系)之间传输的对象

DAO(data access object) 数据访问对象

是一个sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合VO, 提供数据库的CRUD操作…

POJO(Plain Ordinary Java Object 简单Java对象)

中间对象。

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

DAO(Data Access Object数据访问对象)

基本没有和其它O互相转化的可能性和必要性。主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出VO、DTO。

QO 查询对象

参考

  • https://www.cnblogs.com/zander/archive/2012/08/11/2633344.html
  • https://www.zhihu.com/question/57236999/answer/238514905

转载地址:https://javaedge.blog.csdn.net/article/details/104082803 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java持久层框架MyBatis全注解详解
下一篇:Java支付系统(三) - SpringBoot 应用程序搭建

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月09日 08时42分52秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章