依照JDBC规范,有四种类型的JDBC驱动程序体系结构:
Type1:这类驱动程序将JDBCAPI作为到另一个数据访问API的映射来实现,如开放式数据库连通性(OpenDatabaseConnectivity,ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC桥驱动程序就是Type1驱动程序的最常见的例子。
Type2:这类驱动程序部分用JAVA编程语言编写,部分用本机代码编写。这些驱动程序使用特定于所连接数据源的本机客户端库。同样,由于使用本机代码,所以其可移植性受到限制。
Type3:这类驱动程序使用纯JAVA客户机,并使用独立于数据库的协议与中间件服务器通信,然后中间件服务器将客户机请求传给数据源。
Type4:这类驱动程序是纯JAVA,实现针对特定数据源的网络协议。客户机直接连接至数据源。
对于DB2UDBV7.2来说,它不支持Type1和Type4的驱动程序,但是提供了分别支持Type2和Type3的驱动程序。
示例如下:
两种驱动程序均随产品安装由db2java.zip提供。
COM.ibm.db2.jdbc.app.DB2Driver
这是一种Type2的JDBC驱动程序,它通过DB2本地客户机库的帮助建立和DB2本地数据库或是远程数据库的连接(事先将远程数据库编目到本地)。因此,我们必须在应用系统所在的机器上同时部署DB2本地客户机库,这也许是它最大的一个不足之处。
使用格式如下:
DriverName:COM.ibm.db2.jdbc.app.DB2Driver
URLPattern:jdbc:db2:databasename
databasename:需要访问的数据库名
COM.ibm.db2.jdbc.net.DB2Driver
这是一种Type3的JDBC驱动程序,它通过与一台已经部署了DB2本地客户机库的机器通信来建立和DB2远程数据库的连接。
使用格式如下:
DriverName:COM.ibm.db2.jdbc.net.DB2Driver
URLPattern:jdbc:db2:ServerIP:databasename
ServerIP:需要访问的数据库所在机器IP地址
databasename:需要访问的数据库名
(目标DB2系统侦听该服务于默认端口6789,否则还需要在URLPattern中指定目标端口号)
对于DB2UDBV8.1来说,它仍然不支持Type1的驱动程序。同时,它在DB2UDBV8.1的基础上,新增加了对Type4驱动程序的支持。
示例如下:
DB2UDBV8.1仍然支持上面所述V7.2支持的两种驱动程序,随产品安装由db2java.zip提供,但具体实现上和DB2UDBV7.2产品发布的包有所不同,所以可能存在下文所要进行实验验证的兼容性问题。
除了COM.ibm.db2.jdbc.app.DB2Driver之外,DB2UDBV8.1还提供了另外一种Type2的驱动程序,随产品安装由db2jcc.jar提供。其实现包名是com.ibm.db2.jcc.DB2Driver,在DB2UDBV8.1最初的实现中,此驱动程序只用于使用Type4驱动程序体系结构与DB2服务器进行直接的JAVA连接,这类驱动程序由于不需要另外部署DB2本地客户机库以及性能相对较好而收到开发人员的欢迎。自从DB2UDBV8.1.2(安装了FixPack2)之后,开发人员还可以在Type2体系结构中使用该驱动程序,以提高本地应用程序的性能。
这里,两种驱动程序具有相同的实现类名称,有两种不同的方法可以区分DB2系统在内部最终会实例化哪个驱动程序:
使用不同的URLPattern来区分两种不同的驱动程序
Type2DriverURLPattern:jdbc:db2:databasename
这当中databasename是需要访问的数据库名
Type4DriverURLPattern:jdbc:db2://ServerIP:50000/databasename
这当中ServerIP是需要访问的数据库所在机器IP地址,databasename是需要访问的数据库名,DB2服务器会在默认端口50000上进行侦听。
使用连接特性来区分数据库连接是否会使用DB2本地客户机库,或者是使用JAVA直接连接。
DB2UDBV8.1新增加支持的这种Type4驱动程序,常被称为“通用JDBC驱动程序”,是一种与驱动程序类型连通性或目标平台无关的抽象JDBC处理器,因此常用于进行分布式和本地DB2UDB访问。因为“通用JDBC驱动程序”独立于任何特定JDBC驱动程序类型连通性或目标平台,所以它在一个DB2UDB驱动程序实例中同时支持所有JAVA连通性(Type4驱动程序)和基于JNI的连通性(Type2驱动程序)。该驱动程序可以用于独立JAVA应用程序或多层应用程序,是开发人员一个不错的选择。
评论