java - 实现 MVC 时,应用程序的哪一部分应该调用 DAO 中的方法?

标签 java hibernate jsp spring-mvc dao

我今天参加了考试,其中一个问题如下:

When implementing MVC, from which park of out web application (controller or view) we should call the methods defined in out DAO implementation? You should explain.

<小时/>

我知道 Controller 负责将传入的http请求重定向到适当的 View , 并且 View (JSP 文件)应该使用 DAO 函数来获取信息并显示它。

我的讲师说我错了, Controller 对此做出了回应。

当我问为什么时,他说“我应该听讲座”。 那么,为什么 DAO 应该从 Controller 而不是 View 调用呢?

最佳答案

你应该听过讲座。

抱歉,开个玩笑:)

模型- View - Controller 是一种重要的设计模式,用于各种 UI 设计。

  • View 的作用是显示数据并与用户交互 - 仅此而已
  • 模型是关于建模和存储数据 - 没有别的
  • Controller 负责处理数据、将内容映射到模型中或从模型中映射出来等。

您应该能够完全交换 MVC 系统中的 View ,这将改变用户交互 - 但不会改变程序的任何行为。由此应该清楚为什么将逻辑放入 View 中是一个坏主意。

DAO 是关于如何实现数据存储和持久层的。 View 是关于如何显示数据的。

它们是两个截然不同的工作,MVC 的全部意义就是将事情分开并给它们自己独立的工作来做。您可以换入和换出不同的持久层,并且 View 不需要更改,您可以换入和换出不同的 View ,并且持久层不会更改。

通过直接将表示与持久性耦合,您将失去这种解耦。正确的方法是编写只关心模型的 View 。编写只关心数据的模型,然后使用 Controller 将它们粘合在一起并填充模型。

关于java - 实现 MVC 时,应用程序的哪一部分应该调用 DAO 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592956/

相关文章:

Java ZipInputStream 提取错误

java - Eclipse中Hibernate空指针异常

java - 复杂的 Json 对象到带有 Gson 的 Map 字段的 Java 对象

java - 如何处理 JUnit 设置方法中的异常

java - 广播接收器不能静态工作

Hibernate "Could not determine type for..."ManyToOne OneToMany 映射

java - 严重 : Context [/example] startup failed due to previous errors

java - Spring mvc + jsp页面中的安全css和js

java - 在 JSTL 中接受对象

java - 是否可以在 JSP 中定义一个方法并从 servlet 调用它