频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

3.1.2 主流数据访问技术的介绍和比较

作者: 罗江华 朱永光 出处:电子工业出版社  2008-03-17 15:14    砖    好    评论   进入论坛
阅读提示:《.NET Web高级开发》可以使读者通过阅读进一步的了解和掌握.NET,本文介绍了主流数据访问技术的介绍和比较。

3.1.2  主流数据访问技术的介绍和比较

主流的数据访问技术根据开发平台的不同主要分为两个体系:微软体系和Java体系。

1.微软体系

·ODBC(Open Database Connectivity):这是第一个使用SQL访问不同关系数据库的数据访问技术。使用 ODBC 应用程序能够通过同样的命令操纵不同类型的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的 ODBC 驱动。

·DAO(Data Access Objects):不像 ODBC 那样是面向 C/C++ 程序员的,它是微软提供给 Visual Basic 开发人员的一种简单的数据访问方法,用于操纵 Access 数据库。

·RDO(Remote Data Object):在使用 DAO 访问不同的关系型数据库的时候,Jet 引擎不得不在 DAO 和 ODBC 之间进行命令的转化,导致了性能的下降,而 RDO(Remote Data Objects)的出现就顺理成章了。

·OLE DB:随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(Component Object Model)的OLE DB应运而生了。

·ADO:基于 OLE DB 之上的 ADO 更简单、更高级、更适合Visual Basic 程序员,同时消除了 OLE DB 的多种弊端,取而代之的是微软技术发展的趋势。

·ADO.NET:微软在 .NET 框架中提出的全新的数据访问模型。

·LINQ to SQL和ADO.NET EF(Entity Framework):微软下一代基于ADO.NET之上构建的类似ORM技术的高层数据访问技术。

2.Java体系

·JDBC(Java Database Connectivity:Java 数据库连接),其分为如下4种规范:

Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开放式数据库连通性(Open Database Connectivity,ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC 驱动程序就是 Type 1 驱动程序的最常见的例子。

Type 2:这类驱动程序部分用 Java 编程语言编写,部分用本机代码编写。这些驱动程序使用特定于所连接数据源的本机客户端库。同样,由于使用本机代码,所以其可移植性受到限制。

Type 3:这类驱动程序使用纯 Java 客户机,并使用独立于数据库的协议与中间件服务器通信,然后中间件服务器将客户机请求传给数据源。

Type 4:这类驱动程序是纯 Java,实现针对特定数据源的网络协议。客户机直接连接至数据源。目前,有关 JDBC 最新的工业规范是JDBC 3.0,http://www.jcp.org/en/jsr /detail?id=54 JSR54,这是在JCP上的规范。

·Hibernate:Hibernate是一个开源的数据访问ORM中间件,是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。

·JDO:Java 数据对象 (JDO) 是一个存储Java对象的规范。它已经被JCP组织定义成JSR12规范,它为Java Data Object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些烦琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML及对象数据库(ODBMS)等,使得应用可移植性更强。

下面,重点比较一下在微软体系下的两种重要数据访问技术ADO和ADO.NET:

ADO以Recordset 存储,而ADO.NET则以DataSet 表示。Recordset看起来更像单张数据表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接;而DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览还是更新数据都必须是实时的;而ADO.NET 则使用离线方式,在访问数据的时候 ADO.NET 会导入并以 XML 格式维护数据的一份副本,ADO.NET 的数据库连接也只有在这段时间需要在线。

此外,由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而 ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。

图3-2即描绘了ADO技术的体系结构。而图3-3则描绘了ADO.NET技术的体系结构。

 
图3-2  ADO 架构
 
图3-3  ADO.NET架构

下面的示例代码显示了ADO和ADO.NET之间的显著差异:

·ADO Code

<!--#include file=“adovbs.inc”--> 
<%
Dim connStr, rs
connStr = “Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;
Initial Catalog=pubs;Data Source=localhost”
SET rs= Server.CreateObject(“ADODB.Recordset“)
rs.Open “Authors”, connStr, adOpenForwardOnly, adLockOptimistic, adCmdTable
WHILE NOT rs.EOF
response.write rs(“au_fname”) & “,” & rs(“au_lname”) & “<br>”
rs.moveNext
END
SET rs=nothing %>

·ADO.NET Code

Dim sql AS String = “SELECT * FROM Authors” 
Dim conn AS New SqlConnection(“server=localhost; uid=sa; password=; database=pubs”)
Dim comm AS New SqlCommand(sql, conn)
Dim DataAdapter AS New SqlDataAdapter(comm)
Dim ds AS New DataSet()
conn.Open()
DataAdapter.Fill(ds, “Authors_table”)
conn.Close()

【责任编辑:杜书 TEL:(010)68476606】

回书目   上一节   下一节
专题
企业Web安全威胁在线评估系统
ASP.NET 2.0基础开发指南
.NET移动与嵌入式技术专题
.NET Framework新手入门专题
VS.NET实用开发专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。