专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 一文了解JDBC驱动程序

一文了解JDBC驱动程序

更新时间:2021-10-25 11:23:12 来源:动力节点 浏览891次

一个JDBC驱动程序是一个软件组件使得Java的应用程序与互动数据库。JDBC 驱动程序类似于ODBC 驱动程序、ADO.NET 数据提供程序和OLE DB 提供程序。

一文了解JDBC驱动程序

要连接单个数据库,JDBC(Java 数据库连接API)需要每个数据库的驱动程序。JDBC 驱动程序发出与数据库的连接,并实现在客户端和数据库之间传输查询和结果的协议。

JDBC 技术驱动程序属于四类之一。

JDBC-ODBC 桥接

本机 API 驱动程序

网络协议驱动程序(中间件驱动程序)

数据库协议驱动程序(纯 Java 驱动程序)或瘦驱动程序。

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

JDBC 1 类驱动程序,也称为JDBC-ODBC 桥接器,是一种数据库驱动程序实现,它使用ODBC驱动程序连接到数据库。驱动程序将 JDBC 方法调用转换为 ODBC 函数调用。

该驱动程序,因为它利用ODBC的这又依赖于底层的本地库依赖于平台的操作系统的JVM是在运行。此外,使用此驱动程序会导致其他安装依赖项;例如,安装了该驱动程序的计算机上必须安装ODBC,并且数据库必须支持ODBC 驱动程序。如果有纯 Java 驱动程序的替代品可用,则不鼓励使用此驱动程序。另一个含义是,鉴于驱动程序和平台之间的绑定,使用类型 1 驱动程序的任何应用程序都是不可移植的。该技术不适合高交易环境。类型 1 驱动程序也不支持完整的 Java 命令集,并且受到 ODBC 驱动程序功能的限制。

Sun(现在是 Oracle)提供了一个 JDBC-ODBC 桥驱动程序:sun.jdbc.odbc.JdbcOdbcDriver. 此驱动程序是本机代码而不是 Java,并且是封闭源代码。Sun 的/Oracle 的 JDBC-ODBC Bridge 在 Java 8 中被删除(其他供应商的可用)。

如果已编写驱动程序以便加载它会导致创建一个实例并DriverManager.registerDriver使用该实例作为参数进行调用,则它位于 DriverManager 的驱动程序列表中并可用于创建连接。

有时可能会出现多个 JDBC 驱动程序能够连接到给定 URL 的情况。例如,当连接到给定的远程数据库时,可以使用 JDBC-ODBC 桥驱动程序、JDBC-to-generic-network-protocol 驱动程序或数据库供应商提供的驱动程序。在这种情况下,测试驱动程序的顺序很重要,因为 DriverManager 将使用它找到的第一个可以成功连接到给定 URL 的驱动程序。

首先,DriverManager 尝试按照注册的顺序使用每个驱动程序。(jdbc.drivers 中列出的驱动程序总是首先注册。)它将跳过任何不受信任的代码的驱动程序,除非它们是从与尝试打开连接的代码相同的源加载的。

它通过依次调用每个驱动程序的 Driver.connect 方法来测试驱动程序,并将用户最初传递给方法的 URL 传递给它们DriverManager.getConnection。识别 URL 的第一个驱动程序建立连接。

优点

几乎任何安装了 ODBC 驱动程序的数据库都可以访问,并且可以检索数据。

缺点

性能开销,因为调用必须通过 JDBC(java 数据库连接)桥接至 ODBC(开放数据库连接)驱动程序,然后到达本机数据库连接接口(因此可能比其他类型的驱动程序慢)。

需要在客户端计算机上安装 ODBC 驱动程序。

不适合小程序,因为客户端需要安装ODBC驱动。

特定的 ODBC 驱动程序并不总是适用于所有平台;因此,此驱动程序的可移植性受到限制。

JDK 1.8 (Java 8) 不支持。

类型 2 驱动程序 – 本机 API 驱动程序

JDBC 类型 2 驱动程序,也称为Native-API 驱动程序,是一种使用数据库客户端库的数据库驱动程序实现。驱动程序将JDBC方法调用转换为数据库 API 的本机调用。例如:Oracle OCI 驱动程序是类型 2 驱动程序。

优点

由于没有 JDBC-ODBC 桥的实现,它可能比 Type 1 驱动程序快得多。

缺点

需要在客户端计算机上安装供应商客户端库。

并非所有数据库都有客户端库。

此驱动程序依赖于平台。

此驱动程序支持除小程序以外的所有 Java 应用程序。

类型 3 驱动程序 – 网络协议驱动程序(中间件驱动程序)

JDBC 类型 3 驱动程序,也称为数据库中间件的纯 Java 驱动程序,是一种数据库驱动程序实现,它利用调用程序和数据库之间的中间层。中间层(应用程序服务器)将JDBC调用直接或间接转换为特定于供应商的数据库协议。

这与类型 4 驱动程序的不同之处在于协议转换逻辑不在客户端,而是在中间层。与类型 4 驱动程序一样,类型 3 驱动程序完全用 Java 编写。

同一个客户端 JDBC 驱动程序可以用于多个数据库。这取决于中间件配置为支持的数据库数量。类型 3 驱动程序与平台无关,因为与平台相关的差异由中间件处理。此外,利用中间件提供了额外的安全和防火墙访问优势。

函数

将 JDBC API 调用发送到中间层网络服务器,该服务器将调用转换为 DBMS 特定的网络协议。然后将转换后的调用发送到特定的 DBMS。

遵循三层通信方法。

可以连接到多个数据库——不是特定于供应商的。

用 java 编写的 JDBC Client 驱动程序使用独立于数据库的协议与中间件网络服务器通信,然后该网络服务器将此请求转换为该数据库的数据库命令。

因此,客户端驱动程序与中间件通信是独立于数据库的。

优点

由于客户端和中间件服务器之间的通信是独立于数据库的,因此客户端上不需要数据库供应商库。无需为新数据库更改客户端。

中间件服务器(可以是成熟的 J2EE 应用程序服务器)可以提供典型的中间件服务,如缓存(连接、查询结果等)、负载平衡、日志记录和审计。

单个驱动程序可以处理任何数据库,前提是中间件支持它。

例如:IDA 服务器

缺点

需要在中间层完成特定于数据库的编码。

添加的中间件层可能会导致额外的延迟,但通常可以通过使用更好的中间件服务来克服。

类型 4 驱动程序 – 数据库协议驱动程序/瘦驱动程序(纯 Java 驱动程序)

JDBC 类型 4 驱动程序,也称为 Direct to Database Pure Java Driver,是一种数据库驱动程序实现,可将JDBC调用直接转换为特定于供应商的数据库协议。

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

由于数据库协议是特定于供应商的,JDBC 客户端需要单独的驱动程序(通常由供应商提供)来连接到不同类型的数据库。

优点

完全用Java实现以实现平台独立性。

这些驱动程序不会将请求转换为中间格式(例如 ODBC)。

客户端应用程序直接连接到数据库服务器。不使用翻译或中间件层,提高了性能。

JVM 可以管理应用程序到数据库连接的所有方面;这样可以方便调试。

缺点

驱动程序是特定于数据库的,因为不同的数据库供应商使用广泛不同的(通常是专有的)网络协议。

如果大家想了解更多相关知识,不妨来关注一下动力节点的Java在线学习,里面有更丰富的内容在等着大家学习,相信对大家会有所帮助的。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>