【问题标题】:Should DTO contain an enum or notDTO 是否应该包含枚举
【发布时间】:2022-01-13 13:54:25
【问题描述】:

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

enum Property {
    A, B, C;
}

我想为这个实体提供类似的 DTO,DTO 应该将属性作为枚举还是字符串?

在 DTO 类中传递枚举以转换为枚举(反之亦然)的最佳方式是什么。

【问题讨论】:

  • 我建议我们保留这个问题。承认,有可能(至少理论上)在这里有不同的意见,但我看不到任何激烈的战争或徒劳的讨论爆发。另一方面,我确实已经看到了一个好的答案,可能还会有其他答案,甚至可能会从中得出一些共识和/或有用的信息。

标签: java json jpa


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    DTO 是否应该将 Property 作为枚举

    当然应该。正确输入是数据验证的第一行。如果属性的值被限制为某个预定义的集合,为什么不应该反映在 DTO 中?

    请注意,这并不一定意味着枚举应该在 DTO 和 DTO 最终映射到的任何对象之间共享。这完全是一个不同的问题,不同的人可能对此有不同的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2013-11-25
      • 1970-01-01
      相关资源
      最近更新 更多