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