fbpx
维基百科

数据访问对象

计算机软件中,数据访问对象data access objectDAO)是为某种类型的数据库或其他持久性机制提供一个抽象介面对象。通过映射应用程序对持久层的调用,DAO提供一些特定的数据操作,而无需暴露数据库细节。这种隔离支持单一功能原则。它分离了应用程序需要访问哪些数据,就域特定对象和数据类型(DAO的公共接口),而言,这些需求可以用数据库管理系统(DBMS)、数据库模式等满足(DAO的实现)。

尽管这种设计模式同样适用于以下内容:1、大多数编程语言;2、有持久化需求的大多数软件类型;3、大多数数据库。它在传统上与Java EE应用程序和关系数据库相关(通过JDBC API访问,因为它源于Sun Microsystems的最佳实践指南[1],该平台的“核心J2EE模式”)。

优点

使用数据访问对象的优点是应用程序的两个重要部分之间相对简单并严格分离,它们可以但不应该彼此了解任何东西,并且两者可预期的频繁和独立发展。改变业务逻辑可以依赖于相同的DAO接口,而对持久性逻辑的更改只要接口保持正确实现,就不会影响DAO客户端。存储的所有细节都隐藏在应用程序的其余部分中(见信息隐藏英语Information hiding)。因此,可以修改一个DAO实现而不影响应用程序的其余部分,从而可能实现对持久性机制的更改。DAO充当了应用程序与数据库之间的中介,它们在对象与数据库记录之间来回转移数据。用测试替身英语Test double取代DAO可以促进代码的单元测试,使测试不依赖于持久层。

Java编程语言的非特定上下文中,数据访问对象作为一项设计概念可以用多种方式实现。这可以将应用程序中的数据访问部分分离为非常简单的接口,迁移到框架或商业产品。DAO编码范例可能需要一些技巧。像是Java Persistence API英语Java Persistence APIEnterprise JavaBeans之类的技术已内置在应用程序服务器中,可以在JavaEE应用程序服务器的应用程序中使用。商业产品如TopLink可以在基于对象关系映射(ORM)的产品上使用。流行的开源ORM产品包括Doctrine (PHP)HibernateiBATIS,以及JPA实现(例如Apache OpenJPA英语Apache OpenJPA)。

缺点

使用DAO的潜在缺点包括抽象泄漏[來源請求]代码重复抽象反演英语Abstraction inversion。尤其是将DAO作为常规Java对象的抽象会隐藏每个数据库访问的高成本,并且可能强迫开发人员触发多个数据库查询来检索普通SQL查询中一次就可取回的信息。如果一个应用程序需要多个DAO,人们可能发现自己对每个DAO重复基本上相同的创建、读取、更新和删除代码。不过,也可以实现一个处理常用操作的通用DAO来避免样板化代码。[2]

工具和框架

参见

参考资料

  1. ^ Core J2EE Patterns - Data Access Objects. Sun Microsystems Inc. 2007-08-02 [2017-06-10]. (原始内容存档于2012-04-09). 
  2. ^ See http://www.ibm.com/developerworks/java/library/j-genericdao/index.html (页面存档备份,存于互联网档案馆) for workarounds
  3. ^ Hodgson, Kyle; Reid, Darren. ServiceStack 4 Cookbook. Packt Publishing Ltd. : Chapter 4 [22 June 2016]. ISBN 9781783986576 (英语). 

外部链接

  • Java Persistence - The DAO Design Pattern (页面存档备份,存于互联网档案馆
  • PHP best practices (Use Data Access Objects (DAO)) (页面存档备份,存于互联网档案馆

数据访问对象, 本條目翻譯自其他語言維基百科, 需要精通本領域的編者協助校對翻譯, 如果您精通本領域, 又能清楚地將來源語言翻譯為中文, 歡迎您協助參與校對與修訂, 原文参见维基数据, 此條目需要精通或熟悉相关主题的编者参与及协助编辑, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 在计算机软件中, data, access, object, 是为某种类型的数据库或其他持久性机制提供一个抽象介面的对象, 通过映射应用程序对持久层的调用, dao提供一些特定的数据操作, 而无需暴露数据库细节, 这种隔. 本條目翻譯自其他語言維基百科 需要精通本領域的編者協助校對翻譯 如果您精通本領域 又能清楚地將來源語言翻譯為中文 歡迎您協助參與校對與修訂 原文参见维基数据 此條目需要精通或熟悉相关主题的编者参与及协助编辑 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 在计算机软件中 数据访问对象 data access object DAO 是为某种类型的数据库或其他持久性机制提供一个抽象介面的对象 通过映射应用程序对持久层的调用 DAO提供一些特定的数据操作 而无需暴露数据库细节 这种隔离支持单一功能原则 它分离了应用程序需要访问哪些数据 就域特定对象和数据类型 DAO的公共接口 而言 这些需求可以用数据库管理系统 DBMS 数据库模式等满足 DAO的实现 尽管这种设计模式同样适用于以下内容 1 大多数编程语言 2 有持久化需求的大多数软件类型 3 大多数数据库 它在传统上与Java EE应用程序和关系数据库相关 通过JDBC API访问 因为它源于Sun Microsystems的最佳实践指南 1 该平台的 核心J2EE模式 目录 1 优点 2 缺点 3 工具和框架 4 参见 5 参考资料 6 外部链接优点 编辑使用数据访问对象的优点是应用程序的两个重要部分之间相对简单并严格分离 它们可以但不应该彼此了解任何东西 并且两者可预期的频繁和独立发展 改变业务逻辑可以依赖于相同的DAO接口 而对持久性逻辑的更改只要接口保持正确实现 就不会影响DAO客户端 存储的所有细节都隐藏在应用程序的其余部分中 见信息隐藏 英语 Information hiding 因此 可以修改一个DAO实现而不影响应用程序的其余部分 从而可能实现对持久性机制的更改 DAO充当了应用程序与数据库之间的中介 它们在对象与数据库记录之间来回转移数据 用测试替身 英语 Test double 取代DAO可以促进代码的单元测试 使测试不依赖于持久层 在Java编程语言的非特定上下文中 数据访问对象作为一项设计概念可以用多种方式实现 这可以将应用程序中的数据访问部分分离为非常简单的接口 迁移到框架或商业产品 DAO编码范例可能需要一些技巧 像是Java Persistence API 英语 Java Persistence API 和Enterprise JavaBeans之类的技术已内置在应用程序服务器中 可以在JavaEE应用程序服务器的应用程序中使用 商业产品如TopLink可以在基于对象关系映射 ORM 的产品上使用 流行的开源ORM产品包括Doctrine PHP Hibernate iBATIS 以及JPA实现 例如Apache OpenJPA 英语 Apache OpenJPA 缺点 编辑使用DAO的潜在缺点包括抽象泄漏 來源請求 代码重复和抽象反演 英语 Abstraction inversion 尤其是将DAO作为常规Java对象的抽象会隐藏每个数据库访问的高成本 并且可能强迫开发人员触发多个数据库查询来检索普通SQL查询中一次就可取回的信息 如果一个应用程序需要多个DAO 人们可能发现自己对每个DAO重复基本上相同的创建 读取 更新和删除代码 不过 也可以实现一个处理常用操作的通用DAO来避免样板化代码 2 工具和框架 编辑ODB 英语 ODB C 基于ODB编译器的对象关系映射 ORM 系统 适用于C ORMLite 英语 ORMLite 轻量级对象关系映射 ORM 框架 以Java编写 适用于JDBC和Android 3 Microsoft Entity Framework DBIx Class 对象关系映射 ORM 模型 适用于Perl ObjectiveSql 页面存档备份 存于互联网档案馆 基于ActiveRecord 封装的ORM 框架 以Java编写参见 编辑增刪查改 CRUD 数据访问层 服务数据对象 数据映射器模式参考资料 编辑 Core J2EE Patterns Data Access Objects Sun Microsystems Inc 2007 08 02 2017 06 10 原始内容存档于2012 04 09 See http www ibm com developerworks java library j genericdao index html 页面存档备份 存于互联网档案馆 for workarounds Hodgson Kyle Reid Darren ServiceStack 4 Cookbook Packt Publishing Ltd Chapter 4 22 June 2016 ISBN 9781783986576 英语 外部链接 编辑Java Persistence The DAO Design Pattern 页面存档备份 存于互联网档案馆 PHP best practices Use Data Access Objects DAO 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 数据访问对象 amp oldid 72734105, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。