所以我正在使用带有SpringBoot的Apache Beam,并在.query中使用JDBCIO,我正在从表“customer”中检索记录(从records.customer中选择*,其中customer_code =“abc”)。所以这个“customer”类应该是实体还是 DTO?
我的理解是,仅当我们使用存储库时才需要一个实体。如果我错了请纠正我。
在处理 JPA 存储库时,您将使用
Entity
。需要记住的是,Entity
基本上是数据库的表示,因此,例如使用 Hibernate(JPA 实现),Entity
数据中的每个更改都将在某个时刻保留在数据库中。这可能正是您需要和想要的,也可能不是,您必须小心谨慎。想象一下,您在两个不同的 Entities
类之间共享 Service
,其中一个类对其进行了更改,从而实际上产生了副作用。这通常是错误的来源。
DTO(数据传输对象)通常用于通过 REST API 公开您的
Entities
。如果您使用 Entity
本身,当 Jackson 尝试将对象序列化为 JSON 时,您可能会遇到麻烦。您不妨看看实际使用 DTO 在 Services
之间进行通信的代码。这通常会减少出现错误的可能性(如前所述),但也会使您的代码更加复杂,并且可能难以实现某些用例。
您可以根据您的域使用其中之一。 实体用于与您的域范围相匹配。它适用于“行为”。 DTO(数据传输对象)用于将数据从一个进程/模块传输到另一个进程/模块。
我们可以在直接处理数据库操作和存储库时使用实体,并且可以使用 DTO 在应用程序的不同层或组件之间传输数据。