DTO 是否应该包含枚举

Red*_*ddi 2 java json jpa

假设我有一个具有枚举属性的实体。

enum Property {
    A, B, C;
}
Run Code Online (Sandbox Code Playgroud)

我希望该实体有类似的 DTO,DTO 应该将属性作为枚举还是字符串吗?

在 DTO 类中传递枚举以将其转换为枚举的最首选方法是什么,反之亦然。

Gee*_*nte 6

对此有很多不同的看法。有些人对于DTO和Entity类的分离非常严格。其他人说您应该关注域类,并使用基础设施适配器而不是 DTO 和实体。

在我看来,简单的不可变值类可以在 DTO 和实体之间共享。例如,Instant 或 LocalDate、枚举或某些特定于域的值对象。您只需要确保它们可以正确地从数据传输所需的格式转换为数据传输所需的格式,并且它们是不可变的,即只有构造函数和 getter,没有 setter。

所以我会在 DTO 和实体中使用枚举。