第一种:JDBC-ODBC桥
Jdbc-odbc桥是sun公司提供的,是jdk提供的的标准api。这种类型的驱动实际是把所有jdbc的调用传递给odbc,再由odbc调用本地数据库驱动代码。(本地数据库驱动代码是指由数据库厂商提供的数据库操作二进制代码库,例如在oracle for windows中就是oci dll文件)
只要本地机装有相关的odbc驱动那么采用jdbc-odbc桥几乎可以访问所有的数据库,jdbc-odbc方法对于客户端已经具备odbc driver的应用还是可行的。但是,由于jdbc-odbc先调用odbc再由odbc去调用本地数据库接口访问数据库。所以,执行效率比较低,对于那些大数据量存取的应用是不适合的。而且,这种方法要求客户端必须安装odbc 驱动,所以对于基于internet,intranet的应用也是不合适的。因为,你不可能要求所有客户都能找到odbc driver。
第二种:本地Api驱动
本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库。这种方法需要本地数据库驱动代码。
这种驱动比起jdbc-odbc桥执行效率大大提高了。但是,它仍然需要在客户端加载数据库厂商提供的代码库。这样就不适合基于internet的应用,并且,他的执行效率比起3,4型的jdbc驱动还是不够高。
第三种:网络协议驱动
这种驱动实际上是根据我们熟悉的三层结构建立的。jdbc先把对数局库的访问请求传递给网络上的中间件服务器。中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器。如果中间件服务器也是用java开发的,那么在在中间层也可以使用1,2型 jdbc驱动程序作为访问数据库的方法。
由于这种驱动是基于server的所以,它不需要在客户端加载数据库厂商提供的代码库。而且他在执行效率和可升级性方面是比较好的。因为大部分功能实现都在server端,所以这种驱动可以设计的很小,可以非常快速的加载到内存中。但是,这种驱动在中间件层仍然需要有配置其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好。
第四种:本地协议驱动
这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求。由于4型驱动写的应用可以直接和数据库服务器通讯。这种类型的驱动完全由java实现,因此实现了平台独立性。
由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器。所以它的执行效率是非常高的,而且,它根本不需要在客户端或服务器端装载任何的软件或驱动。这种驱动程序可以动态的被下载。但是对于不同的数据库需要下载不同的驱动程序。
附:
JDBC(Java DataBase Connectivity)API是Java程序语言内的针对数据存取所设计的程序开发接口,主要是由一组Java语言编写的"类"和"接口"所构成。
JDBC 3.0 API已完全包含在JDK 1.4版本中。
使用JDBC API存取特定数据库系统前,必须拥有适当的JDBC驱动程序,可以在Sun网站查询http://java.sun.com/products/jdbc/jdbc.drivers.html,
也可以在OTN网站下载最新的JDBC驱动程序http://otn.oracle.com/software/tech/java/sqlj_jdbc/content.html。
JDBC分为两大部分,
一、开发接口,提供给程序开发人员必要的java"类"或"方法",开发接口包括下面两个包java.sql和javax.sql
二、实现接口,定义JDBC的规格与需求,主要是由Sun公司提供给关系型数据库系统厂商,各厂商可以遵循标准规格设计出最佳的JDBC驱动程序。
所以开发JDBC驱动程序的厂商是将各种API通过驱动程序的形式来实现;使用这些JDBC驱动程序的开发人员,则是利用API所提供的Java"类"与"方法"来开发数据库应用程序。
ODBC与JDBC两种驱动程序的差异
(1)ODBC是通过C语言接口,不适合java程序直接调用(ODBC的C语言API大量使用指针,易产生安全问题)
(2)可以将JDBC API想象成"高级的ODBC API面向对象版本"