第五节 JDBC驱动程序类型

JDBC驱动程序是什么?

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

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

JDK附带的Java.sql包包含各种类,其类的行为被定义,实现在第三方驱动程序中完成。 第三方供应商在其数据库驱动程序中实现java.sql.Driver接口。

JDBC驱动程序类型

JDBC驱动程序实现因Java运行的各种操作系统和硬件平台而异。 Sun将实现类型分为四种类型,分别为1,2,34类型,如下所述:

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

类型1驱动程序中,JDBC桥接器用于访问安装在每台客户机上的ODBC驱动程序。 使用ODBC需要在系统上配置表示目标数据库的数据源名称(DSN)。

当Java第一次出现时,这是一个驱动程序,因为大多数数据库仅支持ODBC访问,但现在这种类型的驱动程序仅推荐用于实验性使用或没有其他替代方案时使用。

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

类型2:JDBC本地API

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

如果要更改数据库,则必须更改原生API,因为它特定于数据库,并且现在大部分已经过时,但是使用类型2驱动程序实现了一些扩展功能的开发,它消除了ODBC的开销。

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

类型3:JDBC-Net纯Java

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

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

可以将应用程序服务器视为JDBC"代理",它会调用客户端应用程序。 因此,我们需要了解应用程序服务器的配置,才能有效地使用此驱动程序类型。

应用程序服务器可能会使用类型1,2或4驱动程序与数据库通信,了解细微差别对理解JDBC是有帮助的。

类型4:100%纯Java

类型4驱动程序中,基于纯Java的驱动程序通过套接字连接与供应商的数据库直接通信。 这是数据库可用的最高性能驱动程序,通常由供应商自己提供。

这种驱动是非常灵活的,不需要在客户端或服务器上安装特殊的软件。 此外,这些驱动程序可以动态下载。

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

应该使用哪个驱动程序?

如果您正在访问一种类型的数据库,例如Oracle,Sybase或IBM DB2,则首选驱动程序类型为类型4

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

类型2 驱动程序在数据库不可用的类型3类型4驱动程序的情况下使用。

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

相关推荐
Asthenia0412几秒前
ES-Java:一网打尽SearchRequest/SearchSourceBuilder/BoolQueryBuilder/QueryBuilders
后端
Aska_Lv23 分钟前
业务架构设计---硬件设备监控指标数据上报业务Java企业级架构
后端·架构
用户611881615196223 分钟前
Java基础面试题
java
m0_7482552633 分钟前
Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)
spring boot·后端·ui
小华同学ai37 分钟前
吊打中文合成!这款开源语音神器效果炸裂,逼真到离谱!
前端·后端·github
语落心生44 分钟前
算法计算与训练如何支持低开销流式计算? deepseek背后的smallpond需要些新改造
后端
DavidSoCool1 小时前
Elasticsearch Java API Client [8.17] 使用
java·大数据·elasticsearch
无世世1 小时前
【Java从入门到起飞】面向对象编程(高级)
java·开发语言
Vic101011 小时前
Mac如何查看 IDEA 的日志文件
java·macos·intellij-idea
陈逸轩*^_^*1 小时前
idea打不开,idea打不开,Error occurred during initialization of VM
java·ide·intellij-idea