更新时间:2022-08-25 16:29
数据访问对象(Data Access Objects,DAO)DAO是第一个面向对象的接口,它是露丁MerofJet数据岸引擎(《由Miroft Acce 所使用》,并允许VauatBasce安者通过ODBC像直接连接到其他数据库一样,直接连接到Aces 表。DAO最适用于单系统应用程序或小范围本地分布使用DAO是一种应用程序编程接口CAPD,DA 对象封闭了ASS的Je 函数。通过jet函数,它还可以访问其他的结构化查询语言(SQL) 数据库。12EE 开发人员使用数据访问对象(DAO 设计模式把底层的数据访问逻辑和高层的高务逻辑分开,实现DAO模式能够更加专注于编写数据访问代码。
DAO就是DatabaseAccess Objects,数据访问对象的英文缩写。在VB中提供了两种与Jet数据库引擎接口的方法:Data控件和数据访问对象(DAO)。Data控件只给出有限的不需编程而能访问现存数据库的功能,而DAO模型则是全面控制数据库的完整编程接口。Data控件将常用的DAO功能封装在其中,它与DAO控件的关系就好像内存与CACHE之间的关系一样,所以这两种方法并不是互斥的,实际上,它们常同时使用。
DAO数据访问对象(DataAccessObjects)是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ODBCDirect功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。现在vb数据库编程大都使用ADO,很少人还用DAO.
DAO是集合,对象,方法和属性;它用对象集合来处理数据库,表,视图和索引等。使用DAO编程,可以访问并操作数据库,管理数据库的对象和定义数据库的结构等。
DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理一个关系型数据库系统所需的全部操作的属性和方法,这其中包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等。
Visual Basic中的数据库编程就是创建数据访问对象,这些数据访问对象对应于被访问物理数据库的不同部分,如数据库、表、字段和索引等,同时用这些对象的属性和方法来实现对数据库的操作,以便在Visual Basic窗体中使用绑定和非绑定控件来显示操作结果并接收用户输入。
Visual Basic通过DAO和Jet引擎可以识别三类数据库:
VisualBasic数据库
也就是*.MDB数据库
外部数据库
它们是使用几种流行格式的“索引顺序访问方法(ISAM)”数据库,这些流行格式包括Btrieve、dBASEIII、dBASEIV、Microsoft FoxPro versions2.0和2.5以及Paradox versions 3.x和4.0。在Visual Basic中能够创建和操作所有以上格式的数据库。也可以访问文本文件数据库和Microsoft Excel或Lotus1-2-3电子表格。
ODBC数据库
包括符合ODBC标准的客户/服务器数据库,如Microsoft SQL Server。要在Visual Basic中创建真正的客户/服务器应用程序,可以使用ODBC Direct直接把命令传递给服务器处理。也就是说Visual Basic还支持其它不使用Jet数据库引擎的数据访问方法。数据访问对象的ODBC Direct模式允许使用同样的对象模型和语法绕过Jet引擎直接访问ODBC数据。
由上面的叙述可知,对于编程人员来讲,你只须了解DAO的使用,对具体的数据库系统无须做深入的探讨,就可对几乎任何一种数据库进行操作,“以不便应万变”, 而对数据库文件自身的物理操作,将由相应的数据库引擎把数据访问对象上的这些操作转换为对数据库文件自身的物理操作,这些引擎来处理所有与各种数据库的接口。
使用数据访问对象的优点是应用程序的两个重要部分之间相对简单并严格分离,它们可以但不应该彼此了解任何东西,并且两者可预期的频繁和独立发展。改变业务逻辑可以依赖于相同的DAO接口,而对持久性逻辑的更改只要接口保持正确实现,就不会影响DAO客户端。存储的所有细节都隐藏在应用程序的其余部分中(见信息隐藏)。因此,可以修改一个DAO实现而不影响应用程序的其余部分,从而可能实现对持久性机制的更改。DAO充当了应用程序与数据库之间的中介,它们在对象与数据库记录之间来回转移数据。用测试替身取代DAO可以促进代码的单元测试,使测试不依赖于持久层。
在Java编程语言的非特定上下文中,数据访问对象作为一项设计概念可以用多种方式实现。这可以将应用程序中的数据访问部分分离为非常简单的接口,迁移到框架或商业产品。DAO编码范例可能需要一些技巧。像是Java Persistence API和Enterprise JavaBeans之类的技术已内置在应用程序服务器中,可以在JavaEE应用程序服务器的应用程序中使用。商业产品如TopLink可以在基于对象关系映射(ORM)的产品上使用。流行的开源ORM产品包括Doctrine (PHP)、Hibernate、iBATIS,以及JPA实现(例如Apache OpenJPA)。
使用DAO的潜在缺点包括抽象泄漏、代码重复和抽象反演。尤其是将DAO作为常规Java对象的抽象会隐藏每个数据库访问的高成本,并且可能强迫开发人员触发多个数据库查询来检索普通SQL查询中一次就可取回的信息。如果一个应用程序需要多个DAO,人们可能发现自己对每个DAO重复基本上相同的创建、读取、更新和删除代码。不过,也可以实现一个处理常用操作的通用DAO来避免样板化代码。