gpt4 book ai didi

hibernate - 将 ORM 与严格的 MVC 框架结合使用

转载 作者:行者123 更新时间:2023-12-02 00:26:29 25 4
gpt4 key购买 nike

我是 ColdFusion ORM 的新手,我有一些问题希望得到帮助。

我正在开发一个使用相当标准和严格的 MVC 架构的框架。该框架还有一个位于 Controller 和模型之间的“服务层”。服务层处理所有业务逻辑和验证。

一个标准的 CRUD 过程是这样的:

用户通过 View 提交表单 --> View 提交给 Controller --> Controller 发送给服务层进行处理 --> 服务层可以对请求执行任何类型的业务逻辑和验证 -->服务层然后将数据发送到模型 --> 模型使用 EntityNew() 和 EntitySave() 运行事务 --> 然后模型将带有 ID 的响应发回服务层 -->服务层应用一些逻辑并为用户构建消息 --> 服务层然后将响应消息发送到 Controller --> Controller 然后将其发送到 View --> View 然后将其显示给用户。

这个过程运作良好,我对角色分离感到满意。它使所有逻辑远离 View 、 Controller 和模型,并将其隔离在服务层中。

我的问题是,当我需要在服务层与数据库通信以检查用户名是否唯一以进行验证时,我应该怎么做?现在我只是在服务层运行 EntityLoad()。这似乎在技术上绕过模型层并通过 ORM 直接与数据库接口(interface)。这是否会被视为破坏 MVC 框架。

我不确定的另一件事是,如果我需要使用数据库中的数据填充 View 中的下拉列表,我会在 View 中运行 EntityLoad() 以获取下拉列表的数据。同样,这在技术上围绕模型进行,以通过 ORM 与数据库通信。

我想我只是对在严格的 MVC 框架中使用 ORM 的最佳实践感到困惑。我是否应该在我的模型文件中为每次与数据库的交互使用单独的方法,然后让 View 或服务层与模型中的这些方法进行通信?当我试着这样想时,一切的组织似乎都迷失了。

只是想把我的思绪围绕在这个问题上。

如能提供有关此主题的任何帮助,我们将不胜感激。

提前致谢。

最佳答案

在我看来,直接从服务层使用ORM是可以的。可能没有充分的理由进一步抽象。将 ORM 功能视为网关或 DAO。如果您真的愿意,您可以将这些功能放入网关或 DAO 中,有些人会这样做。

然而,从 View 直接使用 ORM 是错误的。不要这样做。有几个更好的方法来处理它。

  • 将您需要的数据与其他数据一起返回,以从 Controller (与模型对话)构建页面。

  • 从 View 远程调用服务层 (Ajaxy) 以获取数据。

可能(可能?)其他方法可以处理它。但最重要的是,您的 View 不应该与模型层对话。

关于hibernate - 将 ORM 与严格的 MVC 框架结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747118/

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