繁体   English   中英

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

[英]Difference between DTO(data transfer object ) and class object in java?

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

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

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

我相信这应该是真的:

assertTrue(POJO == DTO)

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

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

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

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

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

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

以下是(数据)传输对象模式的一种解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM