在我的 MVC 项目中,我可以有一个简化的泛型 "DAO" 吗?

In my MVC project, can I have a single simplified generic "DAO"?

这是一道基于Javaspring/springboot MVC的现代建筑问题。

每当我为每个 classDao 构建一个 DAO 时,拥有 N 个接口、N 个 class es、N 个 DTO 是非常繁重的……当我必须为 classDao 创建一个 DAO 时=58=] 有很多查询,它变得太长了。

我的问题是基于简化并使其通用化或使用对象是否正确。

例如。

在 MVC 中,我可以在我的项目中使用一个“单一 CRUD 方法”来拥有一个单一的“DAO”,并让控制器处理这个 DAO 方法的响应吗?而不是在 N 个 DAOS 中使用 N 个方法?

喜欢:

1 - 查看 -> 调用控制器

2 - 控制器 -> 通过服务发送查询

3 - 服务层 -> 指向单个 DAO

4 - DAO -> 接收查询和 that there is only one method 即 returns objects、“?”(通用)或 resultset 并且这些在控制器)

我提到它是因为它们都指向一个单一的“方法”,它将通过控制器进行管理。

所以每个项目将只有 1 个 DAO,每个人都会指向它,而不是每个项目都有 1 个 DAO Class。

我理解架构问题取决于程序员,有程序员说:

有时我们发现开发很繁琐,为什么不让它更敏捷一点。 我们讨论最佳实践和简化 DAO,而不试图破坏 MVC 模型。

In MVC, can I have a single "DAO" in my project with a "single crud method" and have the controller handle the response of this DAO method? instead of having N methods with N DAOS?

是的,您可以创建一个 DAO class 来为您完成这项工作,但是您将违反 SOLID[=25] 最重要的规则之一=]原则即德Single Responsability。事实上,在诸如 ORM(Hibernate、EclipseLink 和 Spring 构建在 Hibernate 之上的数据)等工具中已经有一种独特的 DAO。

ORM 背后的原理是采用您的 M 模型,通过反射扫描字段,并为您生成适当的查询。许多细节都被隐藏了,它有助于避免许多与 Data Acces Layer 设计相关的样板文件。

在您的情况下,如果您仍想使用自己的 DAO,则必须通过定义单个接口或单个抽象 class 来使用泛型,您的所有 classDAO 都将实现.

只要选择合适的工具,适合合适的情况。