Hibernate 在严格的MVC框架中使用ORM

Hibernate 在严格的MVC框架中使用ORM,hibernate,model-view-controller,orm,coldfusion,Hibernate,Model View Controller,Orm,Coldfusion,我对ColdFusion Form还很陌生,我有一些问题希望得到帮助 我正在开发一个框架,该框架采用了相当标准和严格的MVC体系结构。这个框架还有一个“服务层”,位于控制器和模型之间。服务层处理所有业务逻辑和验证 标准积垢处理过程如下所示: 用户通过视图提交表单-->视图提交给控制器-->控制器发送到服务层进行处理-->服务层可以对请求执行任何类型的业务逻辑和验证-->服务层然后将数据发送到模型-->模型使用EntityNew()和EntitySave()运行事务-->然后模型将ID为的响应发回

我对ColdFusion Form还很陌生,我有一些问题希望得到帮助

我正在开发一个框架,该框架采用了相当标准和严格的MVC体系结构。这个框架还有一个“服务层”,位于控制器和模型之间。服务层处理所有业务逻辑和验证

标准积垢处理过程如下所示:

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

这个过程很好,我对角色的分离很满意。它使所有逻辑远离视图、控制器和模型,并将其隔离在服务层中

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

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

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

我只是想把我的思绪集中在这件事上

在此问题上的任何帮助都将不胜感激


提前感谢。

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

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

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

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


可能有(可能?)其他方法来处理它。但底线是,您的视图不应该与模型层对话

谢谢你的帮助。我将修改视图访问数据库的方式。再次感谢