【问题标题】:Difference between Model classes and DAO classesModel类和DAO类的区别
【发布时间】:2020-08-22 07:29:35
【问题描述】:

我是基于 Java 的 Web 应用程序的新手。我必须使用 MVC 结构创建一个动态 Web 项目。到目前为止,我创建了三个包和一些 java 类,如下所示。我对这些事情有些怀疑

  1. 谁能解释一下模型类和DAO类的区别

  2. 由于我使用的是 MVC 结构,我真的需要为 DAO 创建一个单独的包,还是可以将所有 DAO 类实现放在 Model 类中?因为MVC的意思是Model-View-Controller

模型类

DAO 类

【问题讨论】:

    标签: java model-view-controller model dao


    【解决方案1】:

    谁能解释一下模型类和 DAO 的区别 类

    这些是非常不同的东西。
    DAO 是面向 CRUD 的数据服务(读取/创建/更新/删除数据),模型是表示数据的对象。 DAO 使用模型,但不是相反。

    由于我使用的是 MVC 结构,我真的需要创建一个单独的 DAO 的包还是可以把所有的 DAO 类 Model 类中的实现?

    因为 DAO 和模型是两个不同的概念(虽然相关),所以将它们的类分开在两个不同的包中似乎更清楚。

    【讨论】:

      【解决方案2】:

      DAO 类与您的持久性系统(通常是数据库)和控制器进行通信,并在它们之间移动模型类的实例。模型类代表您正在使用的真实世界(例如,医院管理应用程序的患者、医生和预约,或银行应用程序的客户、帐户等)。理想情况下,您的模型类甚至不应该知道存在 DAO。所以是的,将它们放在不同的包中是有意义的,因为它们是不同的东西。请注意,即使您的应用程序遵循 MVC 模式,这并不意味着您的应用程序只关注视图、模型和控制器。您可以并且通常会有其他问题,例如持久性,属于它们自己的层。

      您可能想做的另一件事是拥有DTOs。它们是模型实体的附加表示(但它们应该放在自己的包中,而不是模型包中),但 DTO 不必具有与模型类相同的属性。 DTO 是控制器应该提供给视图的内容。这样,您的视图不知道您的模型,并且您不会向视图层公开您不想公开的模型类的任何属性。例如,如果您有一个包含信用卡号信息的客户模型类,但您有一个不需要显示该信用卡号的视图,您可以创建一个包含其他客户数据的 DTO 并使用它为该视图发送不需要的数据到您的视图。

      【讨论】:

        猜你喜欢
        • 2019-05-29
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 2013-02-25
        • 2015-07-23
        相关资源
        最近更新 更多