Java DTO2025年5月12日 | 阅读 5 分钟 企业应用架构模式在处理大量复杂数据方面起着至关重要的作用。它们是处理大型系统常见问题的标准化解决方案。企业应用使我们能够操作、显示和存储海量数据。在开发企业应用时,我们应该在开始之前考虑避免紧耦合并确保数据完整性/安全性。 DTO 是 **数据传输对象** 的缩写,它是一种设计模式。它是我们称之为 **EPA** 模式之一,当我们 T需要使用封装和聚合数据进行传输的对象时。DTO 类似于数据结构,但与数据结构一样,它不包含任何业务逻辑。它包含序列化和反序列化的机制。在 DTO 中,我们可以存储来自单个源或多个源的数据。我们可以存储完整数据,也可以存储源中的少量数据。 如果我们将在代码中实现 DTO,这意味着数据是在系统之间传输的。DTO 主要用于减少昂贵的远程调用次数。为了在 DTO 和任何实体对象之间转换数据,曾经定义了组合器对象,但现在我们使用 **映射器** 来转换数据。 实现数据传输对象为了实现 DTO,让我们创建一个公开 REST API 的 Spring Boot 应用程序。通过使用该 Spring Boot 应用程序,我们可以从 H2 数据库中检索用户位置。要实现该应用程序,我们应该了解如何将 H2 数据库与 Spring Boot 集成。要了解更多关于 H2 数据库的信息,请 点击这里。 Spring Initializr 是处理第一个 Spring Boot 应用程序的最简单方法之一。 ![]() Spring Boot CLI 是 spring initializr 的替代方案,用于开发引导应用程序。 如果我们已经有了 Spring Boot 或 maven 应用程序,我们需要在 **pom.xml** 文件中添加以下依赖项。 如果我们使用 Gradle,我们需要添加以下一行代码 让我们通过设计 User 模型来开始实现一个演示应用程序 在上面的类中,我们创建了一个带有某些用户信息(如用户名、姓名、密码和电子邮件)的 Entity,并在 user entity 和 Location entity 之间创建了 **一对多** 关系。Location Entity 如下所示 为了执行基本的 CRUD 操作,我们使用了 Spring Boot 提供的可靠的 CrudRepository 如果您不了解如何使用这些存储库,请 点击这里。 现在,我们需要创建一个控制器来处理 GET 请求并返回用户位置列表。从数据库检索的用户和位置对象也将包含一些额外信息,如用户名和密码。我们只打印这些对象中必需且必要的数据,但额外数据仍然存在。 正如我们之前告诉您的,通过使用 DTO,我们可以共享源中的必需数据或完整数据。现在,我们创建 DTO 来传输必需的数据,并通过聚合它们来一起传输两个对象的数据。 UserLocationDTO.java 现在,我们的对象包含了我们想要显示给用户的所有信息。为了将这两个对象映射到一个 UserLocationDTO,我们需要一些映射工具,如 **ModelMapper** 和 **MapStruct**。这两个工具在将对象映射到单个 DTO 中起着至关重要的作用。 我们也可以手动执行转换,为此,我们需要实现一个服务来调用 UserRepository 并返回 DTO。 让我们实现服务类来将对象映射到单个 DTO。 MappingService.java 在获取了用户列表后,我们可以直接将它们转换为包含位置信息的 UserLocationDTO 对象。 注意:当用户或其他解析结果的服务调用该端点时,它会返回一个 @ResponseBody,其中包含一个 UserLocationDTO 列表。现在,我们在 Hibernate 数据库中添加一些 Location 和 User 的虚拟数据以供测试。
现在,我们使用 Postman 来访问端点并测试我们的 API 端点是否正常工作。 ![]() |
在 Java 中,接口至关重要,尤其是在设置类契约和保证 Java 编程领域中的代码一致性方面。它通过概述实现类必须实现的若干方法来充当类的蓝图。抽象、模块化和...
阅读 4 分钟
数字签名是一种验证数字消息和文档权威性的机制。它因提供比其他签名更高的安全性而非常受欢迎。在 Java 中,使用 JDK 安全 API 来创建和实现数字签名。在本节中,我们将...
阅读 12 分钟
这是一种存储项目列表的方法,但这些项目在内存中不是紧密相邻存储的。相反,每个项目都链接到下一个项目,形成一个链。这种设置使得添加或删除...非常容易。
阅读 8 分钟
多线程编程经常需要线程通信。管道(Pipes)的概念是 Java 提供的多种线程间通信技术之一。Java 管道主要用于两个线程之间进行单向数据传输以实现线程间通信。通过这种方法,数据可以被控制和...
5 分钟阅读
什么是 CompletableFuture? CompletableFuture 用于异步编程。异步编程意味着编写非阻塞代码。它在与主应用程序线程不同的单独线程上运行任务,并通知主线程其进度、完成情况或失败情况。这样,主线程就不会...
阅读 13 分钟
数组中缺失的数字问题是与编码相关的面试中广泛使用的问题之一。此问题涉及尝试从包含 n 个不同整数(从一到 n+1)的数组中识别一个缺失的数字。因此,这个...中只有一个数字。
阅读 4 分钟
Java long 关键字是一个基本数据类型。它用于声明变量。它也可以与方法一起使用。它可以容纳一个 64 位二进制补码整数。当我们需要的存储的整数值超过范围时,通常会使用它...
5 分钟阅读
Java 是一种广泛使用的编程语言,以其面向对象的特性而闻名,尽管它并不严格遵守这种方法,因为它也支持整数(int)和字符(char)等基本数据类型。本文比较和对比了 Java 开发的两个关键工具:BlueJ,一个用户友好的...
阅读 2 分钟
Java IntSummaryStatistics 类的 getCount() 函数用于确定此 IntSummaryStatistics 中的记录数。语法:public long getCount() 参数:此方法不接受任何参数。返回值:该函数返回此 IntSummaryStatistics 中的记录总数。示例...
阅读 2 分钟
Java 作为一种多功能编程语言,为开发人员提供了各种工具和结构来高效地管理和处理数据。用于处理数据的两个最广泛使用的机制是集合(Collections)和流(Streams)。它们各自服务于不同的目的,并具有各自的优点和...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India