gpt4 book ai didi

jhipster - 为什么在 JHipster 中 DTO 是在服务层而不是在 REST 层生成的?

转载 作者:行者123 更新时间:2023-12-05 04:08:25 26 4
gpt4 key购买 nike

我们已经启动了一个 JHipster 项目并使用了 DTO。一开始我不是很喜欢,但是后来,这让我们能够真正为我们的 REST 层定制我们的 DTO:完美。

但现在我们正在将 JMS 添加到项目中,并且我们意识到我们的消息监听器需要访问我们的服务层......但是服务返回适合 REST 层而不是消息传递层的 DTO。

为什么JHipster会在服务层生成DTO?为什么不在 REST 层?这样,REST 和 JMS 层(以及之后的其他层)都可以访问仅处理实体的服务层。然后,REST 和 JMS 都会有适合自己需求的 DTO。

知道为什么首先要这样做吗?谢谢

最佳答案

在 JHipster 中,您实际上拥有 DTO 和 VM:

  • DTO(数据传输对象)位于服务层:它们用于从事务层获取数据。这个想法是在服务层内部你有 JPA 实体,它们有关系(用 Hibernate 延迟加载),并且服务层返回不由 Hibernate 管理的 DTO(不再延迟加载)。实体和 DTO 之间可能不是一对一的关系:也许 DTO 聚合了多个实体,也许它们有更多字段(或更少字段!),这都取决于您的业务模型。
  • VM( View 模型)在 View 层中。这个措辞来自 Angular,我们经常有“vm”对象。这个想法是拥有特定于您的 View 层的对象,因此编写客户端应用程序代码更容易、更安全且性能更高。一个 DTO 可能有多个 VM,因为 DTO 的数据可能在多个不同的屏幕中使用。通常,VM 是以 JSON 格式从 Java 后端传输到 JavaScript 前端的内容。

对于 JHipster,这些层都不是强制性的。您通常会:

  • 只是用于简单 CRUD 的实体
  • 业务代码的实体和 DTO
  • 存在特定、复杂 View 时的实体和虚拟机
  • 当一切都很复杂时的实体、DTOS 和 VM

关于jhipster - 为什么在 JHipster 中 DTO 是在服务层而不是在 REST 层生成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com