Java 之 JDBC驱动程序类型

Java数据库连接(JDBC)是标准应用程序编程接口(API)的JavaSoft规范,允许Java程序访问数据库管理系统。JDBC API由一组用Java编程语言编写的接口和类组成。使用这些标准接口和类,程序员可以编写连接数据库的应用程序,发送以结构化查询语言(SQL)编写的查询,并处理结果。JDBC面向关系数据库。

因为JDBC是标准规范,所以使用JDBC API的Java程序可以连接到任何具有JDBC驱动程序的数据库管理系统(DBMS)。

JDBC驱动程序

JDBC API定义了程序员用来连接数据库和发送查询的Java接口和类。

JDBC驱动程序为特定的DBMS供应商实现这些接口和类。

Java程序(使用JDBC API)在实际连接到数据库之前为特定的DBMS加载指定的驱动程序。然后,JDBC的DriverManager类将所有JDBC API调用发送到已加载的驱动程序。

JDBC驱动程序的类型

JDBC驱动程序4种不同类型

  1. 类型1:JDBC-ODBC桥驱动程序
  2. 类型2:本机API驱动程序
  3. 类型3:所有Java +中间件翻译驱动程序
  4. 类型4:纯Java驱动程序

让我们一一看一下。

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

JDBC驱动程序类型1

类型1 JDBC驱动程序由Java部分组成,该Java部分将JDBC接口调用转换为ODBC调用。ODBC桥然后调用给定数据库的ODBC驱动程序,即该驱动程序将JDBC方法调用转换为ODBC函数调用。该驱动程序依赖于平台,因为它使用ODBC,而ODBC又取决于运行JVM的基础操作系统的本机库。另外,使用此驱动程序还会导致其他安装依赖性。例如,必须在具有驱动程序的计算机上安装ODBC,并且数据库必须支持ODBC驱动程序。如果可以使用纯Java驱动程序的替代方案,则不建议使用此驱动程序。

Sun提供了JDBC-ODBC桥驱动程序:sun.jdbc.odbc.JdbcOdbcDriver。该驱动程序是本机代码,而不是Java,并且是封闭源代码。

类型2:本机API驱动程序

JDBC驱动程序类型2

类型2 JDBC驱动程序类似于类型1驱动程序,不同之处在于ODBC部分被替换为本地代码部分。本机代码部分针对特定的数据库产品,即使用数据库产品的客户端库。驱动程序将JDBC方法调用转换为数据库本机API的本机调用。

这种体系结构消除了对ODBC驱动程序的需要,而直接称为数据库供应商提供的本机客户端库。数据库供应商很快就采用了这种方法,因为它可以快速,廉价地实现,因为他们可以重用现有的基于C / C ++的本机库。

类型3:所有Java +中间件翻译驱动程序

JDBC驱动程序类型3

类型3 JDBC驱动程序是一种全Java驱动程序,它将JDBC接口调用发送到中间服务器。然后,中间服务器代表JDBC驱动程序连接到数据库。中间层(应用程序服务器)将JDBC调用直接或间接转换为供应商特定的数据库协议。

Type 3驱动程序试图成为100%Java解决方案,但从未真正吸引过很多人。Type 3驱动程序具有Java客户端组件和Java Server组件,后者实际上是在与数据库对话。尽管从技术上讲这是一个完整的Java解决方案,但是数据库供应商不喜欢这种方法,因为这种方法成本高昂–他们将不得不重写全部为C / C ++的本机客户端库。另外,这并没有提高体系结构的效率,因为我们实际上仍然是3层体系结构,因此很容易看出为什么它从来都不是 popular 的选择。

类型4:纯Java驱动程序

JDBC驱动程序类型4

JDBC 4类驱动程序,也称为直接数据库纯Java驱动程序,是一种数据库驱动程序实现,可将JDBC调用直接转换为特定于供应商的数据库协议。它是针对特定数据库产品实现的。今天,大多数JDBC驱动程序都是4类驱动程序。

Type 4驱动程序完全用Java编写,因此与平台无关。它们安装在客户端的Java虚拟机中。它提供了比类型1和类型2驱动程序更好的性能,因为它没有将调用转换为ODBC或数据库API调用的开销。与类型3驱动程序不同,它不需要关联的软件即可工作。

该体系结构将整个JDBC API实现以及用于直接与数据库进行直接通信的所有逻辑封装在一起
。通过在100%java程序包中都包含一个单独的层和一个小的驱动程序,可以轻松进行部署并简化开发过程。

例如,这种类型包括广泛使用的Oracle瘦驱动程序。

“虽然尚未得到JDBC专家组的正式批准,但有关JDBC社区中新的Type 5驱动程序建议的讨论很多。”

saigon has written 1445 articles

Leave a Reply