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”--> |
·ADO.NET Code
Dim sql AS String = “SELECT * FROM Authors” |
| 回书目 上一节 下一节 |
|
||||
| · 隐私保护技术探讨 · Windows Server 2008专.. · WCF开发基础 · Linux——从菜鸟到高手 · 微软出价446亿美元收购.. · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 微软Forefront企业安全.. |
· 如何优化IT 控制能耗 · 国际文档格式标准开战 · CISSP认证成长之路 · 珊瑚虫QQ作者侵权案开庭 · 贝恩资本携手华为22亿.. · 802.11n:下一代的无线.. · 体验Visual Studio 200.. · 运营商封堵非法ADSL共享 |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · 子网掩码教程 · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 中间件应用技术专题 · 深入了解PGP加密技术 · 病毒查杀专题 |
· VPN技术 · 国际文档格式标准开战 · SSL VPN详细知识 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · 木马原理与防范 · ADSL应用面面俱到 |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · 中间件应用技术专题 · SQL Server 2008/2005.. · 子网掩码教程 · RAID——磁盘阵列基础 · 身份认证技术 · 病毒查杀专题 |
· 清除流氓软件——51CTO.. · SSL VPN详细知识 · Sniffer安全技术从入门.. · VPN技术 · 了解统一威胁管理(UTM).. · 网络钓鱼 · ADSL应用面面俱到 · ADSL应用面面俱到 |
|||