通常,当我创建REST应用程序时,我会按以下方式创建它们:
控制器(接收/返回Dtos) - >服务(接收和返回Dtos并使用MapStruct在内部映射到实体) - >存储库(始终接收实体)
但我意识到现在我们可以使用spring属性了:
spring.jpa.open-in-view=false
所以我想知道是否仍然需要Spring REST应用程序中的Dto使用以及使用它们或避免使用它们的含义是什么?
答案 0 :(得分:1)
我认为没有正确的方法。如你所说,我们需要讨论权衡。
为所有图层使用一个模型进行开发可能会加快您的开发速度。您不会花时间创建多个DTO(并且还避免在实体模型和DTO之间创建映射)。但是,你会结合所有。模型中的一个小变化可能会影响所有图层,您可能需要处理它。无论何时需要调整代码,都可能会花费更多精力。
另一种方法是为每个层设置DTO(或专用/特定型号),这可能会增加您的开发时间。在这种情况下,每当请求更改时,对其他层的影响可能很小。我的意思是,在其他层中破坏事物的风险会降低。在您的问题中,实体模型的更改不会影响REST API,因为它只公开DTO。
总结一下,主要问题是:你更喜欢"发展速度"或者"失去层/类之间的耦合"?
如您所见,这取决于您的需求。