Java中PO,DO,DTO,VO的概念


 

原文:https://wenku.baidu.com/view/e03c3b0ebe64783e0912a21614791711cc797994.html

1.VO(View Object):

视图对象,?于展?层,它的作?是把某个指定页?(或组件)的所有数据封装起来。

2.DTO(Data Transfer Object):

数据传输对象,这个概念来源于J2EE的设计模式,原来的?的是为了EJB的分布式应?提供粗粒度的数据实体,以减少分布式调?的次数,

从?提?分布式调?的性能和降低?络负载,但在这?,我泛指?于展?层与服务层之间的数据传输对象。

3.DO(Domain Object):

领域对象,就是从现实世界中抽象出来的有形或?形的业务实体。

4.PO(Persistent Object):

持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成??对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个

字段(或若?个)就对应PO的?个(或若?个)属性。

5.VO与DTO的区别

?家可能会有个疑问:既然DTO是展?层与服务层之间传递数据的对象,为什么还需要?个VO呢?对!对于绝?部分的应?场景来

说,DTO和VO的属性值基本是?致的,?且他们通常都是POJO,因此没必要多此?举,但不要忘记这是实现层?的思维,对于设计层?

来说,概念上还是应该存在VO和DTO,因为两者有着本质的区别,DTO代表服务层需要接收的数据和返回的数据,?VO代表展?层需要

显?的数据。

6.DTO与DO的区别

?先是概念上的区别,DTO是展?层和服务层之间的数据传输对象(可以认为是两者之间的协议),?DO是对现实世界各种业务??的抽

象,这就引出了两者在数据上的区别,例如UserInfo和User(对于DTO和DO的命名规则,请参见笔者前?的?篇博?),对于?个getUser

?法来说,本质上它永远不应该返回?户的密码,因此UserInfo?少?User少?个password的数据。?在领域驱动设计中,正如第?篇

系列?章所说,DO不是简单的POJO,它具有领域业务逻辑