Java中的数据访问对象(DAO)

412
我正在查看一份文件,遇到了一个叫做DAO的术语。我发现它是一个数据访问对象。有人可以解释一下这到底是什么吗?
我知道它是一种用于从不同类型的数据源访问数据的接口,而在我的研究过程中,我还遇到了一个叫做数据源数据源对象的概念,这更加让我困惑。
我真的想知道在编程中,DAO是如何使用的。它是如何使用的?如果有任何解释这个概念的基础知识的页面链接,我也会很感激。
13个回答

2

DAO(数据访问对象)在三层架构中扮演“持久性管理器”的角色,同时也是一种设计模式,您可以参考《四人帮》的书籍。您的应用程序服务层只需要调用DAO类的方法,而不需要了解DAO方法的隐藏和内部细节。


1
在Java中,Pojo也被视为模型类,我们可以为私有变量创建getter和setter。请记住,所有变量都是使用private修饰符声明的。

1
我想用一个小故事来解释DAO在我的项目中的重要性,首先我想解释“为什么DAO很重要?”而不是去解释“什么是DAO?”以便更好地理解。
为什么DAO很重要? 在我的一个项目中,我使用了包含我们系统用户所有基本信息的Client.class。每次需要使用客户端时,我都需要进行一次难看的查询。这降低了可读性并产生了大量冗余的样板代码。
然后,我的一位高级开发人员介绍了一个QueryUtils.class,其中所有查询都使用public static访问修饰符添加,这样我就不需要到处查询了。例如,当我需要激活客户端时,我只需调用:
QueryUtils.findAllActivatedClients();

这样,我对我的代码进行了一些优化。

但还有另一个问题!!!

我感觉QueryUtils.class变得非常庞大。其中包含了100多个方法,也很难阅读和使用。因为这个类包含了其他领域模型的查询(例如-产品、类别、位置等)

然后超级英雄Mr. CTO介绍了一个名为DAO的新解决方案,最终解决了这个问题。我觉得DAO是非常特定于领域的。例如,他创建了一个名为ClientDAO.class的DAO,在其中找到了所有与Client.class相关的查询,这对我来说似乎非常容易使用和维护。巨大的QueryUtils.class被分解成许多其他特定于领域的DAO,例如-ProductsDAO.classCategoriesDAO.class等,这使得代码更加可读性可维护性解耦

什么是DAO?

它是一个对象或接口,可以方便地以可重用的方式访问数据库中的数据,而无需每次编写复杂丑陋的查询语句。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接