我在我的 Web 应用程序中使用 Spring MVC
架构和 JPA
。在哪里手动将数据传输对象 (DTO) 转换为 JPA 实体,反之亦然(即不使用任何框架)?
原文由 xyz 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在我的 Web 应用程序中使用 Spring MVC
架构和 JPA
。在哪里手动将数据传输对象 (DTO) 转换为 JPA 实体,反之亦然(即不使用任何框架)?
原文由 xyz 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个已接受答案的老问题,但想通过使用模型映射器 API 的简单方法来更新它。
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>0.7.4</version>
</dependency>
使用此 API,您可以避免手动设置器和获取器,如已接受的答案中所述。
在我看来,这两种转换都应该在私有实用方法的帮助下在控制器中发生,并使用 Java8 流的映射(如果交换了 DTO 集合),如 本文 所示。
它应该发生在控制器上,因为 DTO 是专有的传输对象。我不会进一步降低我的 DTO。
您在实体上编写服务和数据访问层,并在调用服务方法之前将 DTO 转换为实体,并在从控制器返回响应之前将实体转换为 DTO。
我更喜欢这种方法,因为实体很少更改,并且可以根据需要从 DTO 添加/删除数据。
此处 描述了详细的模型映射器配置和规则
原文由 Sabir Khan 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
我想你问的是在哪里编写整个实体–>DTO 转换逻辑。
喜欢你的实体
你的 DTO 应该是这样的
你的控制器应该像