JDBC驱动程序类型
Java编程语言中的JDBC API提供了一种标准的通用方法来连接数据库。在JDBC API中提供接口的实现是不同数据库供应商的责任,并且数据库供应商的实现是作为JDBC驱动程序提供的。
JDBC驱动程序的类型
基于这些不同的实现,JDBC驱动程序分为四种类型。
类型1驱动程序:JDBC-ODBC桥JDBC驱动程序
类型2驱动程序:部分用Java和部分本机代码编写
类型3驱动程序:将客户端请求转换为数据源的纯Java客户端和中间件服务器。
类型4驱动程序:完全用Java编写。
类型1 JDBC驱动程序
类型1 JDBC驱动程序将JDBC API实现为到另一个数据访问API的映射,例如ODBC(开放数据库连接)。
JDBC-ODBC Bridge驱动程序是将JDBC API请求映射到ODBC请求的类型1 JDBC驱动程序的示例。
缺点
类型1驱动程序是Oracle不再支持的旧驱动程序。
这些驱动程序不是完全用Java编写的,并且依赖于本机库,因此类型1驱动程序不可移植。
每个JDBC调用都映射到ODBC请求,然后映射到DB,这使其非常慢。
类型1 JDBC驱动程序
类型2 JDBC驱动程序
类型2 JDBC驱动程序部分用Java编程语言编写,部分用本机代码编写。这些驱动程序使用特定于它们连接到的数据源的本地客户端库。
Oracle的OCI(Oracle呼叫接口)客户端驱动程序是类型2驱动程序的示例。
缺点
由于需要本机库,因此存在平台依赖性。
JDBC调用使用本机库转换为本机调用,这使其成为慢速驱动程序,尽管不如类型1驱动程序慢。
必须在客户端计算机上安装本机API。
类型2 JDBC驱动程序
类型3 JDBC驱动程序
在类型3中,JDBC驱动程序客户端是用Java编写的,它使用数据库独立协议连接到中间件服务器。中间件服务器将来自客户端的JDBC调用转换为供应商特定的DB调用,然后转发到数据源。
缺点
需要一个中间件服务器。
由于有两个阶段;对中间件服务器的JDBC调用,然后是供应商特定的翻译和与DB的通信,因此JDBC调用处理需要更多时间。
类型3 JDBC驱动程序
类型4 JDBC驱动程序
类型4 JDBC驱动程序完全用Java编写,不需要任何本机代码库或者中间件服务器。 类型4驱动程序为特定数据源实现网络协议,并直接连接到数据源。
类型4 JDBC驱动程序也称为瘦驱动程序
缺点
- 由于驱动程序本身实现了供应商特定的网络协议,因此类型4驱动程序是DB特定的,并且通常由DB供应商提供。