2022年数据访问模式参照 .pdf
《2022年数据访问模式参照 .pdf》由会员分享,可在线阅读,更多相关《2022年数据访问模式参照 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、选择数据访问模式,合理规划数据访问层级别: 初级陈隽伟 , 软件工程师 , IBM 中国软件实验室2005 年 2 月 01 日本文介绍了主流的数据访问技术和典型的数据访问模式,并举例说明了如何在典型场景中选择合适的模式与技术。简介在一个典型的电子商务应用中,三层架构(或是它的变形- N 层架构)常常是架构师们的首选,这当中包括表现层,商业逻辑层和数据访问层。本文的关注点放在数据访问层,它负责和应用中的各种数据源打交道,诸如DB2、Oracle 等关系型数据源、XML 数据以及其它种类的非关系型数据、Web 服务、各种特别的遗留系统等等,将它们整合起来,为商业逻辑层提供统一的数据服务。在本文中
2、,你可以了解到下面这些内容:主流的数据访问技术典型的数据访问模式举例说明如何在典型场景中选择合适的模式与技术这不是一篇专门介绍数据访问技术的文章,也不是一篇有关数据访问话题的完整的索引;而是抛砖引玉,超越数据访问技术这个层次,希望通过一些归纳和讨论使得读者能够更多地关注于数据访问模式,并在自己的实践中有意识地选择合适的模式,这才是本文的目的。主流的数据访问技术从数据库技术诞生到现在,已经有了数十年的历史;相应的,从最早的读写磁盘文件开始,数据访问技术也不断的推陈出新,变得越来越丰富。在最初的日子里,不同的数据库厂商会提供不同的访问接口,开发人员需要针对每种数据库学习不同的访问技术,比如DB2
3、系统的CLI Library 或是Oracle 的 OCI Library 。再到后来,数据访问中间件的思想得到了发展,出现了最初的ODBC (Open Database Connectivity:开放数据库连接)以及其它一些类似的访问技术。 在 C 和 C+ 流行的年代里, 这项技术在微软的推动下不断发展,后来又有了诸如OLE DB(Object Link and Embedding Database)以及ADO(ActiveX Data Object)等数据访问技术,它们直到今天还运行在世界各地成千上万的系统中。这里,我们更为专注的是现在的主流数据访问技术,它们是:JDBC (Java D
4、atabase Connectivity:Java 数据库连接)依照 JDBC 规范,有四种类型的JDBC 驱动程序体系结构:oType 1 :这类驱动程序将JDBC API 作为到另一个数据访问API 的映射来实现,如开放式数据库连通性( Open Database Connectivity,ODBC )。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC 桥驱动程序就是Type 1 驱动程序的最常见的例子。oType 2 :这类驱动程序部分用JAVA 编程语言编写,部分用本机代码编写。这些驱动程序使用特定于所连接数据源的本机客户端库。同样,由于使用本机代码,所以其可移植性受
5、到限制。oType 3 :这类驱动程序使用纯JAVA 客户机,并使用独立于数据库的协议与中间件服务器通信,然后中间件服务器将客户机请求传给数据源。oType 4 :这类驱动程序是纯JAVA ,实现针对特定数据源的网络协议。客户机直接连接至数据源。目前,有关JDBC 最新的工业规范是JDBC 3.0, http:/www.jcp.org/en/jsr/detail?id=54 JSR54,这是在JCP 上的规范。在下面的链接中,你可以获取到有关JDBC 3.0 的最新资料。回页首名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师
6、精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - /developerworks/cn/java/j-jdbcnew/index.html JDBC 3.0 的新特性这是 Sun 的官方网站上,这是有关JDBC 相关技术的信息中心http:/ (Open Database Connectivity):是第一个使用SQL 访问不同关系数据库的数据访问技术。使用 ODBC 应用程序能够通过同样的命令操纵不同类型的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC 驱动。oDAO(Data Access Objects) : 不像 OD
7、BC 那样是面向C/C+ 程序员的,它是微软提供给Visual Basic 开发人员的一种简单的数据访问方法,用于操纵Access 数据库。oRDO (Remote Data Object):在使用DAO 访问不同的关系型数据库的时候,Jet 引擎不得不在DAO 和 ODBC 之间进行命令的转化,导致了性能的下降,而RDO (Remote Data Objects)的出现就顺理成章了。oOLE DB :随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM (Component Object Model)的 OLE DB 应运而生了。oADO :
8、 基于OLE DB 之上的ADO 更简单、更高级、更适 合 Visual Basic 程序员,同时消除了OLE DB 的多种弊端,取而代之是微软技术发展的趋势。oADO.NET :微软在 .NET 框架中提出的全新的数据访问模型。在开始设计 .NET体系架构时,微软就决定重新设计数据访问模型,以便能够完全地基于XML 和离线计算模型。两者的区别主要有:ADO 以 Recordset 存储,而ADO.NET 则以 DataSet 表示。 Recordset看起来更像单张数据表,如果让Recordset以多表的方式表示就必须在SQL 中进行多表连接;而 DataSet 可以是多个表的集合。ADO
9、的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的;而ADO.NET 则使用离线方式,在访问数据的时候 ADO.NET 会导入并以XML 格式维护数据的一份副本,ADO.NET 的数据库连接也只有在这段时间需要在线。此外,由于ADO 使用 COM 技术,这就要求所使用的数据类型必须符合COM 规范,而ADO.NET 基于 XML 格式,数据类型更为丰富并且不需要再做COM 编排导致的数据类型转换,从而提高了整体性能。图 1 即描绘了ADO 技术的体系结构:图 1: ADO 架构而图 2 则描绘了ADO.NET 技术的体系结构:名师资料总结 - - -精品资料欢迎下载 - - -
10、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 图 2:ADO.NET 架构你还可以在下面的链接中得到更多有关ADO 和 ADO.NET 方面相关的参考资料。ADO.NET & ADOADO.NET 技术的简单介绍技术的简要历史你可以在 这个页面 上找到很多有关ODBC 技术的链接典型的数据访问模式如果说数据访问技术是一些得心应手的兵器的话,数据访问模式就应该是各种武功秘笈了,它们才是致胜的法宝。架构师在不同的应用场合下可能会选择不同的数据访问模式,并且还会不断地推陈出新,这里不会
11、也不可能穷尽所有的数据访问模式,而只是列举了其中最为典型的几个。数据访问模式1: 在线访问在线访问是最基本的数据访问模式,也是在实际开发过程中最常采用的。如图3 所示,这种数据访问模式会占用一个数据库连接,读取数据,每个数据库操作都会通过这个连接不断地与后台的数据源进行交互。回页首名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 图 3:在线访问模式数据访问模式2:Data Access Object图 4:DAO 模式如图 4
12、所示, DAO 模式是标准J2EE 设计模式之一 ,开发人员常常用这种模式将底层数据访问操作与高层业务逻辑分离开。一个典型的DAO 实现通常有以下组件:一个 DAO 工厂类一个 DAO 接口一个实现了DAO 接口的具体类数据传输对象 (有时称为值对象) 这当中具体的DAO 类包含访问特定数据源的数据的逻辑。下面的这两篇文章给出了一个通过DAO 模式访问JDBC 数据源的完整的例子:Data Access Object Implementation Write once, persist anywhereImplementation of JDBC DAO Provider数据访问模式3:Dat
13、a Transfer Object名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 图 5:DTO 模式如图5 所示, Data Transfer Object 是经典EJB 设计模式之一。DTO 本身是这样一组对象或是数据的容器,它需要跨不同的进程或是网络的边界来传输数据。这类对象本身应该不包含具体的业务逻辑,并且通常这些对象内部只能进行一些诸如内部一致性检查和基本验证之类的方法,而且这些方法最好不要再调用其它的对象行为。在具体
14、设计这类对象( DTO ) 的时候,通常可以有两种选择:1使用编程语言内置的集合对象,它通常只需要一个类,就可以在整个应用程序中满足任何数据传输目的;而且因为几乎所有的编程语言都内置了集合类型,我们不需要再另外编写这个类的实现代码。同时,使用内置的集合对象来实现DTO 对象的时候,客户端必须按位置序号(在简单数组的情况下)或元素名称(在键控集合的情况下)访问集合内的字段。此外,集合存储的是同一类型(通常是最基本的Object 类型)的对象,这有时会导致在编译时碰到一些无法检测到编码错误,这是采用内置集合对象来实现DTO 对象的缺点。2通过创建自定义类来实现DTO 对象,通过定义显式的get 或
15、是 set 方法来访问数据。这种方式的主要优点在于能够提供与任何其他对象完全一样的、客户端应用程序可访问的强类型对象,这种对象可以提供编译时的类型检查;但是主要缺点在于增加了编码的工作量,因为如果应用程序发出许多远程调用的话,我们需要自己编写大量的调用代码。具体实现中有许多方法试图将上述这两种方法的优点结合在一起。第一种方法是代码生成技术,该技术可以生成脱离现有元数据(如可扩展标记语言( XML ) 架构)的自定义DTO 类的源代码;第二种方法是提供更强大的集合,尽管它也是平台内置的一般的集合,但它将关系和数据类型信息与原始数据存储在一起,比如IBM 提出的SDO 技术或是微软ADO.NET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据访问模式参照 2022 数据 访问 模式 参照
限制150内