HashMap 而不是 DTO?

HashMap instead of DTO?

使用 HashMap 而不是 DTO 有什么问题?我可以不调用 bean 的 setter 和 getter,而是可以从 hashmap 中放入和获取值,并在服务之间传递它(hashmap 实现 Serializable 接口)。 我知道这很糟糕 practice.But 为什么以及在哪种情况下我们会遇到这个问题? 提前感谢您的帮助。

  • 没有编译时检查。当您从 returned HashMap 中提取某些内容时,您永远无法获得编译时验证,以证明您将其强制转换为有效。

  • 重构困难。在许多 IDE(例如 IntelliJ)中,有很好的工具来重构 class' 方法名称、变量等。使用字典模式时,这变得更加困难。

  • return 值更加模糊。假设在项目的第 1 阶段,您取回了一个用户对象并且只使用了 "getUsername()" 方法。然后在阶段 2 中突然需要访问密码属性。如果您有一个用户对象,您只需查看 class 就可以确切地知道该值是否可访问以及如何获取它。使用 HashMap 则不一定如此。如果您无法访问生成 HashMap 的 class 的源代码(在本例中为 EJB),您将永远不知道还有哪些其他数据属性可用。

希望对您有所帮助...