JDBC - 驱动程序类型

什么是JDBC驱动程序?

JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器交互.

例如使用JDBC驱动程序,您可以通过发送SQL或数据库命令然后使用Java接收结果来打开数据库连接并与之交互.

Java.sql 包与JDK一起提供的,包含定义了其行为的各种类,并且它们的实际实现是在第三方驱动程序中完成的.第三方供应商在其数据库驱动程序中实现 java.sql.Driver 接口.

JDBC驱动程序类型

JDBC驱动程序由于Java运行的各种操作系统和硬件平台,实现方式各不相同. Sun已将实现类型划分为四个类别,类型1,2,3和4,下面将对其进行说明 :

类型1:JDBC-ODBC桥驱动程序

在Type 1驱动程序中,JDBC桥用于访问安装在每台客户端计算机上的ODBC驱动程序.使用ODBC,需要在系统上配置代表目标数据库的数据源名称(DSN).

当Java首次出现时,这是一个有用的驱动程序,因为大多数数据库只支持ODBC访问但现在这种类型的驱动程序的建议只对实验使用,或者在没有其他替代方法是可用的.

DBMS Driver type 1

JDK 1.2附带的JDBC-ODBC Bridge就是这种驱动程序的一个很好的例子。

Type 2: JDBC-Native API

在Type 2驱动程序中,JDBC API调用将转换为本机C / C ++ API调用,这些调用对于数据库是唯一的。 这些驱动程序通常由数据库供应商提供,并以与JDBC-ODBC Bridge相同的方式使用。 必须在每台客户端计算机上安装特定于供应商的驱动程序。


如果我们更改数据库,我们必须更改本机API,因为它特定于数据库并且它们现在已经过时,但您可能会通过类型2驱动程序实现一些速度提升,因为它消除了ODBC的开销。

DBMS Driver type 2

Oracle调用接口(OCI)驱动程序是Type 2驱动程序的示例。

Type 3: JDBC-Net纯Java

在Type 3驱动程序中,使用三层方法来访问数据库。 JDBC客户端使用标准网络套接字与中间件应用程序服务器进行通信。 然后,套接字信息由中间件应用服务器转换为DBMS所需的调用格式,并转发到数据库服务器。


这种驱动程序非常灵活,因为它不需要在客户端上安装代码,并且单个驱动程序实际上可以提供对多个数据库的访问。

DBMS Driver type 3

You can think of the application server as a JDBC "proxy," meaning that it makes calls for the client application. As a result, you need some knowledge of the application server's configuration in order to effectively use this driver type.

Your application server might use a Type 1, 2, or 4 driver to communicate with the database, understanding the nuances will prove helpful.

Type 4: 100% Pure Java

In a Type 4 driver, a pure Java-based driver communicates directly with the vendor's database through socket connection. This is the highest performance driver available for the database and is usually provided by the vendor itself.

This kind of driver is extremely flexible, you don't need to install special software on the client or server. Further, these drivers can be downloaded dynamically.

DBMS Driver type 4

MySQL的Connector/J驱动程序是Type 4驱动程序。 由于其网络协议的专有性质,数据库供应商通常提供类型4驱动程序。

应该使用哪种驱动程序?

如果要访问某种类型的数据库(如Oracle,Sybase或IBM),则首选驱动程序类型为4。

如果Java应用程序同时访问多种类型的数据库,则键入3是首选驱动程序。

类型2驱动程序在数据库尚未提供类型3或类型4驱动程序的情况下非常有用。

类型1驱动程序不被视为部署级驱动程序,通常仅用于开发和测试目的。