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代表展示层需要显示的数据。
6、DTO与DO的区别
首先是概念上的区别,DTO是展示层和服务层之间的数据传输对象(可以认为是两者之间的协议),而DO是对现实世界各种业务角色的抽象,这就引出了两者在数据上的区别,例如UserInfo和User(对于DTO和DO的命名规则,请参见笔者前面的一篇博文),对于一个getUser方法来说,本质上它永远不应该返回用户的密码,因此UserInfo至少比User少一个password的数据。而在领域驱动设计中,正如第一篇系列文章所说,DO不是简单的POJO,它具有领域业务逻辑。 (DO是最全的数据,DTO是部分数据,有些数据不应该返回到前台)
DO具有一些不应该让展示层知道的数据,DO具有业务方法,如果直接把DO传递给展示层,展示层的代码就可以绕过服务层直接调用它不应该访问的操作,对于基于AOP拦截服务层来进行访问控制的机制来说,这问题尤为突出,而在展示层调用DO的业务方法也会因为事务的问题,让事务难以控制。
7、DO与PO的区别
DO和PO在绝大部分情况下是一一对应的,PO是只含有get/set方法的POJO,但某些场景还是能反映出两者在概念上存在本质的区别
参考:https://blog.csdn.net/zjrbiancheng/article/details/6253232
VO、DTO、DO、PO的概念、区别和用处
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处作者: Johnny.Liang 发布时间:...
- 浅析VO、DTO、DO、PO的概念、区别和用处 本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和...
- 分类: JavaSE经典文章 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页...
- 概念:VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。...
- 1.概念 PO(persistant object) 持久对象在 O/R 映射的时候出现的概念,如果没有 O/R ...