【问题标题】:Entity usage against Dto usage in Spring bootSpring boot 中实体使用与 Dto 使用对比
【发布时间】:2018-05-08 17:02:48
【问题描述】:

通常,当我创建 REST 应用程序时,我会按以下方式创建它们:

控制器(接收/返回 Dtos)-> 服务(接收和返回 Dtos 并在内部使用 MapStruct 从到映射到实体)-> 存储库(始终接收实体)

但我意识到现在我们可以使用 spring 属性了:

spring.jpa.open-in-view=false

所以我想知道在 Spring REST 应用程序中是否仍然需要使用 Dto,使用它们或避免使用它们的含义是什么?

【问题讨论】:

    标签: java spring spring-mvc spring-boot


    【解决方案1】:

    我认为没有正确的方法。正如你所说,我们需要讨论权衡。

    对所有层使用一个模型进行开发,可能会加快您的开发速度。您不会花时间创建多个 DTO(也避免创建实体模型和 DTO 之间的映射)。但是,您将全部耦合。模型中的微小变化可能会影响所有层,您可能必须处理它。每当您需要调整代码时,可能会花费更多的精力。

    另一种方法是为每一层设置 DTO(或专用/特定模型),这可能会增加您的开发时间。在这种情况下,每当请求更改时,对其他层的影响可能很小。我的意思是,降低了在其他层中破坏东西的风险。正如您的问题一样,实体模型的更改不会影响 REST API,因为它只公开了 DTO。

    总而言之,主要问题是:您更喜欢“开发速度”还是“层/类之间失去耦合”?

    如您所见,这取决于您的需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 2017-09-17
      • 2021-03-13
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多