171120之DTO简介

来源:互联网 发布:phpstudy怎么配置域名 编辑:程序博客网 时间:2024/05/16 08:58

DTO是什么?
Data Transfer Object,数据传输对象,是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从而从数据库中检索数据。DTO模式,是指将数据封装成普通的JavaBeans,在J2EE多个层次之间传输。就类似于信使,是同步系统中的Message,该JavaBeans可以是一个数据模型model。

经验总结:

我们一般在使用DTO类来继承entity实体类,在DTO类里放一些业务字段,并提供get set方法。当我们在业务逻辑层或者交互层用到一些数据库中不存在的字段时,我们就需要在DTO类里仿这些字段,这些字段的意义就相当于一些经处理过的数据库字段,实质意义就是方便数据交互,提高效率。

注意:项目中使用DTO,会增加许多的复杂性,特别是对DTO与Entity之间的属性复制,对DTO中的普通属性可以用BeanUtils.copyPropertues解决,但是对DTO中的其它DTO对象,就麻烦了,特别是对象与对象之间的多对多的关系,在DTO与Entity之间属性复制很容易陷入死循环。

注意:当同样业务有多种接入前端时,看看不用DTO用什么,POJO模型的Persistent Object本身就可以用作DTO

DTO和POJO的区别??
DTO可以隔离依赖,并且更容易测试。在开发中通常会先定义应用层到服务层的接口,这样前台程序和后台程序就可以同步开发。如果传递POJO,前台的开发必须等到后台足够稳定才能开始,而使用DTO,只要传递的输入输出参数不变接口就是稳定的,后台的业务层变化丝毫不会影响前台的工作,而且因为DTO容易构造,前台的测试也比较容易。

问题:PO/VO/DTO/POJO有什么区别?

PO/entity:persistent object 持久化对象
有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。在Hibernate持久化框架中与insert/delete操作密切相关。PO中不应该包含任何对数据库的操作。

VO:value object值对象/view object表现层对象
主要对应页面显示(web页面/swt/swing界面)的数据对象,可以与表对应,也可以不,这根据业务的需要。

POJO:普通的java对象,而不是一个特殊的对象。一个中间对象,可以转化成PO、DTO、

Data Transfer Object(数据传输对象)
问题:您正在设计一个分布式应用程序,为了满足单个客户端请求,您发现自己对一个远程接口发出了多个调用,而这些调用所增加的响应时间超出了可接受的程度。如何保留过程调用接口的简单语义,而不受远程通信固有的滞后时间问题的影响???

解决方案

创建一个数据传输对象 (DTO),用该对象包含远程调用所需要的所有数据。修改远程方法签名,以便将 DTO 作为单个参数接受,并将单个 DTO 参数返回给客户端。在调用方应用程序收到 DTO 并将其作为本地对象存储之后,应用程序可以分别对 DTO 发出一系列单独的过程调用,而不会引发远程调用开销。Martin Fowler 在 Patterns of Enterprise Application Architecture [Fowler03] 中对此模式进行了说明。

参考博客:http://blog.csdn.net/visant/article/details/53282322

原创粉丝点击