由于 JDBC 是标准规范,因此使用 JDBC API 的 Java 程序可以连接到任何具有 JDBC 驱动程序的数据库管理系统 (DBMS)。
JDBC驱动程序
JDBC API 定义了程序员用来连接数据库和发送查询的 Java 接口和类。
Java 程序(使用 JDBC API)在实际连接到数据库之前为特定的 DBMS 加载指定的驱动程序。JDBC 的 DriverManager 类然后将所有 JDBC API 调用发送到加载的驱动程序。
JDBC 驱动程序的类型
有4 种不同类型的 JDBC 驱动程序:
- 类型 1:JDBC-ODBC 桥驱动程序
- 类型 2:本机 API 驱动程序
- 类型 3:所有 Java + Middleware 翻译驱动程序
- 类型 4:纯 Java 驱动程序
让我们一一看看它们。
类型 1:JDBC-ODBC 桥驱动程序
类型 1 JDBC 驱动程序由 Java 部分组成,该部分将 JDBC 接口调用转换为 ODBC 调用。ODBC 桥然后调用给定数据库的 ODBC 驱动程序,即驱动程序将 JDBC 方法调用转换为 ODBC 函数调用。该驱动程序依赖于平台,因为它使用 ODBC,而 ODBC 又依赖于运行 JVM 的底层操作系统的本机库。此外,使用此驱动程序会导致其他安装依赖项;例如,安装了该驱动程序的计算机上必须安装ODBC,并且数据库必须支持ODBC 驱动程序。如果有纯 Java 驱动程序的替代品可用,则不鼓励使用此驱动程序。
Sun 提供了 JDBC-ODBC 桥驱动程序:sun.jdbc.odbc.JdbcOdbcDriver。此驱动程序是本机代码而不是 Java,并且是封闭源代码。
类型 2:本机 API 驱动程序
类型 2 JDBC 驱动程序类似于类型 1 驱动程序,只是ODBC 部分被替换为本机代码部分。本机代码部分针对特定的数据库产品,即使用数据库产品的客户端库。驱动程序将 JDBC 方法调用转换为数据库本机 API 的本机调用。
这种架构消除了对 ODBC 驱动程序的需求,而是直接调用数据库供应商提供的本地客户端库。这很快被 DB 供应商采用,因为它实现起来既快速又便宜,因为他们可以重用现有的基于 C/C++ 的本机库。
类型 3:所有 Java + Middleware 翻译驱动程序
类型 3 JDBC 驱动程序是将 JDBC 接口调用发送到中间服务器的全 Java 驱动程序。然后中间服务器代表 JDBC 驱动程序连接到数据库。中间层(应用程序服务器)将 JDBC 调用直接或间接转换为供应商特定的数据库协议。
类型 3 驱动程序寻求成为 100% Java 解决方案,但从未真正获得太多关注。类型 3 驱动程序有一个 Java 客户端组件和一个 Java 服务器组件,后者实际上与数据库通信。虽然这在技术上是一个完整的 Java 解决方案,但数据库供应商不喜欢这种方法,因为它成本高昂——他们必须重写他们的本地客户端库,这些库都是 C/C++。此外,这并没有提高架构效率,因为我们实际上仍然是一个 3 层架构,所以很容易理解为什么这从来不是一个流行的选择。
类型 4:纯 Java 驱动程序
JDBC 类型 4 驱动程序,也称为 Direct to Database Pure Java Driver,是一种数据库驱动程序实现,可将 JDBC 调用直接转换为特定于供应商的数据库协议。它是为特定的数据库产品实现的。今天,大多数 JDBC 驱动程序都是类型 4 驱动程序。
完全用 Java 编写,因此类型 4 驱动程序与平台无关。它们安装在客户端的 Java 虚拟机中。这提供了比类型 1 和类型 2 驱动程序更好的性能,因为它没有将调用转换为 ODBC 或数据库 API 调用的开销。与类型 3 驱动程序不同,它不需要相关软件即可工作。
该架构将整个 JDBC API 实现以及用于直接与数据库通信的所有逻辑封装在
单个驱动程序中。通过在 100% 的 java 包中包含一个单层和一个小驱动程序,这允许轻松部署并简化开发过程。
例如,这种类型包括广泛使用的 Oracle 瘦驱动程序。
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/243844.html