我们可以使用类对象将数据传输到另一个类。数据传输对象的特点是什么?如何创建它们?它就像类对象吗?
答案 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的一个解释。