首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型类与DAO类的区别

模型类与DAO类的区别
EN

Stack Overflow用户
提问于 2020-08-22 07:29:35
回答 2查看 2.7K关注 0票数 5

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

  1. 有人能解释一下模型类和DAO类的区别吗?
  2. 由于我使用的是MVC结构,所以真的需要为DAO创建一个单独的包吗?还是可以将所有DAO类实现都放在Model类中呢?因为MVC意味着模型-视图-控制器

模型类

DAO类

EN

回答 2

Stack Overflow用户

发布于 2020-08-22 07:34:32

有人能解释一下模型类和DAO类的区别吗?

这些都是非常不同的东西。

DAO是一个面向CRUD的数据服务(读取/创建/更新/删除数据),模型是表示数据的对象。DAO使用的是模型,而不是相反。

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

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

票数 5
EN

Stack Overflow用户

发布于 2020-08-22 08:58:53

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

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63533657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档