Java中的DTO(数据传输对象)和类对象之间的区别?

时间:2011-05-06 06:13:46

标签: java

我们可以使用类对象将数据传输到另一个类。数据传输对象的特点是什么?如何创建它们?它就像类对象吗?

4 个答案:

答案 0 :(得分:2)

主要区别在于DTO在设计上没有任何业务逻辑。它们只是数据结构。

例如:您可能拥有一个存储“用户”的数据库,如果使用DTO,您可以使用UserBean来存储和检索用户对象。但是您的业务逻辑可能有一个User对象(可能来自bean,更可能是通过聚合使用bean),它不仅具有数据,而且还有User可以执行的其他方法。 / p>

答案 1 :(得分:0)

我相信这应该是真的:

assertTrue(POJO == DTO)

关于DTO的唯一特殊之处在于它们不应包含任何行为。

答案 2 :(得分:0)

1,类对象可能包含太多对其他对象的引用,因此太大而无法序列化传输。 DTO只选择有趣的部分,这可以提高性能。

2,在Hibernate中,实体对象可能包含延迟初始化的引用,这些对象需要会话上下文来进行初始化。这些实体对象看起来像"智能对象",DTO在这里转换这些"智能对象"到"普通对象",因为转移"智能对象"当会话上下文不再存在时没有意义。

就我个人而言,我不喜欢DTO,它引入了另一层冗余,但有时候(特别是在使用Hibernate ORM时),没有它就无法生存。

答案 3 :(得分:0)

DTO类是一个普通的Java类,具有特殊意义 - 就像 Observer Factory Model 一样。该名称来自核心J2EE设计模式(传输对象模式),该模式提出了一种在数据库和基于java类的模型之间传递信息的通用方法。

简而言之,DTO是一个java类,其中类名映射到数据库表名,每个数据库列映射到class属性。然后它包含getter和setter方法。

以下是(Data) Transfer Object pattern的一个解释。