gpt4 book ai didi

java - 在 Web 应用程序的所有层中使用实体对象是一种不好的做法吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:41:48 25 4
gpt4 key购买 nike

我正在使用分层架构开发 Web 应用程序。我有:

  1. 应用层( Controller )
  2. 服务层(服务)
  3. 数据访问层 (DAO)

它连接到后端 Oracle 数据库。

我正在使用 JPA 和 Hibernate 作为实现。因此,我创建实体来为我的关系数据库表的对象 View 建模。

我的问题是......在我的所有 3 个层中使用这些实体对象是否被认为是不好的做法?

我知道它至少需要被数据访问层使用,但在服务层和应用层之外呢?

我看到有些人在服务层和应用层使用 DTO,他们在服务层和数据访问层之间进行 DTO 和实体之间的转换。

只是想知道这方面的最佳实践是什么以及最佳方法应该是什么?

最佳答案

在某些情况下,数据对象与用户在屏幕上操作的对象完全匹配。另一方面,在某些情况下,用户根据业务逻辑处理派生和/或影响多个对象。许多报告应用程序都是后者的例子。

根据您的域和用户配置文件,匹配数据/UI 对象案例的频率有高有低。您应该在需要时定义单独的模型,并且通过项目更改来维护它们的成本。因此,过度分离的模型是不好的做法。另一方面,如果您坚持在所有地方传递数据模型,您的业务逻辑或 UI 代码可能不是很干净。

将数据访问层对象与传递给用户界面的对象分开的决定还取决于所使用的工具。例如,在 Controller 以静态方式 (*) 序列化为 JSON 的情况下,可以选择为对象图的每个不同的树遍历(要使用)定义类。另一方面,相同的对象可能可用于基于 JSP 的 UI。

(*) 一个例子是 jackson,它使用注释来固定对象(图形)序列化为树的方式。存在限制树的方法 - 有助于防止不必要的数据泄漏 - 但是在我遇到的情况下,它们的实用性和可维护性是有限的。

关于java - 在 Web 应用程序的所有层中使用实体对象是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630572/

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