在我的 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。
我理解架构问题取决于程序员,有程序员说:
if it works, then it's fine
everyone does it their way
each project is a world
.
有时我们发现开发很繁琐,为什么不让它更敏捷一点。
我们讨论最佳实践和简化 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
都将实现.
只要选择合适的工具,适合合适的情况。
这是一道基于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。
我理解架构问题取决于程序员,有程序员说:
if it works, then it's fine
everyone does it their way
each project is a world
.
有时我们发现开发很繁琐,为什么不让它更敏捷一点。 我们讨论最佳实践和简化 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
都将实现.
只要选择合适的工具,适合合适的情况。