什么时候使用Entity,什么时候使用DTO?

问题描述 投票:0回答:3

所以我正在使用带有SpringBoot的Apache Beam,并在.query中使用JDBCIO,我正在从表“customer”中检索记录(从records.customer中选择*,其中customer_code =“abc”)。所以这个“customer”类应该是实体还是 DTO?

我的理解是,仅当我们使用存储库时才需要一个实体。如果我错了请纠正我。

java spring-boot jdbc entity apache-beam
3个回答
3
投票

在处理 JPA 存储库时,您将使用

Entity
。需要记住的是,
Entity
基本上是数据库的表示,因此,例如使用 Hibernate(JPA 实现),
Entity
数据中的每个更改都将在某个时刻保留在数据库中。这可能正是您需要和想要的,也可能不是,您必须小心谨慎。想象一下,您在两个不同的
Entities
类之间共享
Service
,其中一个类对其进行了更改,从而实际上产生了副作用。这通常是错误的来源。

DTO(数据传输对象)通常用于通过 REST API 公开您的

Entities
。如果您使用
Entity
本身,当 Jackson 尝试将对象序列化为 JSON 时,您可能会遇到麻烦。您不妨看看实际使用 DTO 在
Services
之间进行通信的代码。这通常会减少出现错误的可能性(如前所述),但也会使您的代码更加复杂,并且可能难以实现某些用例。


1
投票

您可以根据您的域使用其中之一。 实体用于与您的域范围相匹配。它适用于“行为”。 DTO(数据传输对象)用于将数据从一个进程/模块传输到另一个进程/模块。


0
投票

我们可以在直接处理数据库操作和存储库时使用实体,并且可以使用 DTO 在应用程序的不同层或组件之间传输数据。

© www.soinside.com 2019 - 2024. All rights reserved.