gpt4 book ai didi

java - 最佳实践 - 多层架构和 DTO

转载 作者:太空狗 更新时间:2023-10-29 22:54:45 25 4
gpt4 key购买 nike

<分区>

在阅读了 stackoverflow 上的一些问答后,我仍然对在我的 Web 应用程序中正确实现 DTO 感到困惑。我当前的实现是一个(基于 Java EE 的)多层架构(具有持久性、服务和表示层),但具有所有层使用的“通用”包,其中包含(除其他外)域对象。在这种情况下,这些层不能真正被视为独立的。打算一步步去掉common package,但是遇到各种挑战/问题:

  • 假设持久层将使用一个类 myproject.persistence.domain.UserEntity(一个基于 JPA 的实体)来存储数据到数据库或从数据库加载数据。为了在 View 中显示数据,我将提供另一个类 myproject.service.domain.User。我在哪里转换它们?用户服务是否负责在两个类之间进行转换?这真的有助于改善耦合吗?
  • User 类应该是什么样的?它应该只包含不可变的 setter/getter 吗? View 编辑现有用户(创建新的 User,使用现有 User 对象的 getter 等)会不会很麻烦?
  • 我应该使用相同的 DTO 类(用户)向服务发送请求以修改现有用户/创建新用户,还是应该实现其他类?
  • 如果使用 myproject.service.domain 中的所有 DTO,表示层是否会非常依赖服务层?
  • 如何处理我自己的异常?我当前的方法会重新抛出大多数“严重”异常,直到它们被表示层处理为止(通常它们会被记录下来并通知用户出现了问题)。一方面,我遇到的问题是我再次拥有一个共享包。另一方面,我仍然不确定这是否可以被视为“最佳实践”。有什么想法吗?

感谢您的任何回答。

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