複製鏈接
請複製以下鏈接發送給好友

數據訪問對象

鎖定
數據訪問對象(Data Access Objects,DAO)DAO是第一個面向對象的接口,它是露丁MerofJet數據岸引擎(《由Miroft Acce 所使用》,並允許VauatBasce安者通過ODBC像直接連接到其他數據庫一樣,直接連接到Aces 表。DAO最適用於單系統應用程序或小範圍本地分佈使用DAO是一種應用程序編程接口CAPD,DA 對象封閉了ASS的Je 函數。通過jet函數,它還可以訪問其他的結構化查詢語言(SQL) 數據庫。12EE 開發人員使用數據訪問對象(DAO 設計模式把底層的數據訪問邏輯和高層的高務邏輯分開,實現DAO模式能夠更加專注於編寫數據訪問代碼。 [1] 
中文名
數據訪問對象
外文名
Data Access Objects
簡    寫
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窗體中使用綁定和非綁定控件來顯示操作結果並接收用户輸入。 [1] 

數據訪問對象識別數據庫

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的使用,對具體的數據庫系統無須做深入的探討,就可對幾乎任何一種數據庫進行操作,“以不便應萬變”, 而對數據庫文件自身的物理操作,將由相應的數據庫引擎把數據訪問對象上的這些操作轉換為對數據庫文件自身的物理操作,這些引擎來處理所有與各種數據庫的接口。 [2] 

數據訪問對象優點

使用數據訪問對象的優點是應用程序的兩個重要部分之間相對簡單並嚴格分離,它們可以但不應該彼此瞭解任何東西,並且兩者可預期的頻繁和獨立發展。改變業務邏輯可以依賴於相同的DAO接口,而對持久性邏輯的更改只要接口保持正確實現,就不會影響DAO客户端。存儲的所有細節都隱藏在應用程序的其餘部分中(見信息隱藏)。因此,可以修改一個DAO實現而不影響應用程序的其餘部分,從而可能實現對持久性機制的更改。DAO充當了應用程序與數據庫之間的中介,它們在對象與數據庫記錄之間來回轉移數據。用測試替身取代DAO可以促進代碼的單元測試,使測試不依賴於持久層。
Java編程語言的非特定上下文中,數據訪問對象作為一項設計概念可以用多種方式實現。這可以將應用程序中的數據訪問部分分離為非常簡單的接口,遷移到框架或商業產品。DAO編碼範例可能需要一些技巧。像是Java Persistence API和Enterprise JavaBeans之類的技術已內置在應用程序服務器中,可以在JavaEE應用程序服務器的應用程序中使用。商業產品如TopLink可以在基於對象關係映射(ORM)的產品上使用。流行的開源ORM產品包括Doctrine (PHP)、HibernateiBATIS,以及JPA實現(例如Apache OpenJPA)。 [2] 

數據訪問對象缺點

使用DAO的潛在缺點包括抽象泄漏、代碼重複和抽象反演。尤其是將DAO作為常規Java對象的抽象會隱藏每個數據庫訪問的高成本,並且可能強迫開發人員觸發多個數據庫查詢來檢索普通SQL查詢中一次就可取回的信息。如果一個應用程序需要多個DAO,人們可能發現自己對每個DAO重複基本上相同的創建、讀取、更新和刪除代碼。不過,也可以實現一個處理常用操作的通用DAO來避免樣板化代碼。 [2] 
參考資料
  • 1.    劉耀林.土地信息系統:中國農業出版社,2011
  • 2.    Hodgson, Kyle; Reid, Darren. ServiceStack 4 Cookbook. Packt Publishing Ltd. : Chapter 4 [22 June 2016]. ISBN 9781783986576