PO/DTO/VO?POJO

Java是一门面向对象的语言,里面有众多的名词对象,比如分层领域模型里面的PO,VO,DAO…,这些名词都是什么意思呢?解释各种名词之前,先放一张图,

VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

PO/DTO/VO?POJO

 

 

  • 用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO。
  • 展示层把VO转换为服务层对应方法所要求的DTO,传送给服务层。
  • 服务层首先根据DTO的数据构造(或重建)一个DO,调用DO的业务方法完成具体业务。
  • 服务层把BO转换为持久层对应的PO(可以使用ORM工具,也可以不用),调用持久层的持久化方法,把PO传递给它,完成持久化操作。
  • 对于一个逆向操作,如读取数据,也是用类似的方式转换和传递。

VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。

DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。通常用于处于不同架构层次或者不同子系统之间的数据传递,或者用于外部接口参数传递,以便提供不同粒度不同信息的数据,以免造成困惑干扰。但在这里,我泛指用于展示层与服务层之间的数据传输对象。

从设计层面来说,VO和DTO有着本质上的区别,DTO代表服务层需要接收的数据和返回的数据,而VO代表展示层需要显示的数据。所以,VO对象的属性可能会比DTO对象的属性少,且可能值不同。 

BO(Business Object):业务对象。可以理解为PO的组合,主要作用是把业务逻辑封装为一个对象,这个对象可以包括一个或多个其他的对象。比如一份简历,有教育经历、工作经历、社会关系等。可以把教育经历对应一个 PO,工作经历对应一个 PO,社会关系对应一个 PO,然后建立一个对应建立的 BO来处理简历,每个 BO 包含这些 PO,这样就可以针对 BO 去处理业务逻辑。

PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

POJO(Plain Ordinary Java Object):简单普通的Java对象,一个POJO持久化以后就是PO,直接用它传递,传递过程就是DTO,直接用来对应表示层就是VO。

 

上一篇:基于javaweb+jsp的游泳馆会员管理系统


下一篇:java编码规范实践总结1