JDBC 驱动程序类型编号之间的差异

2022-09-02 12:20:23

我注意到JDBC有不同的驱动程序,例如:

  1. 类型 1 驱动程序
  2. 类型 2 驱动程序等。到类型 4

为什么他们会得到像1型,2型等名称?有什么逻辑吗?


答案 1

类型编号说明驱动程序如何实际与数据库进行通信。

  1. 通过 ODBC API
  2. 通过数据库供应商特定的API(使用JNI调用,例如Windows中的DLL文件)。
  3. 通过通用网络协议(使用套接字和例如TCP / IP协议)。
  4. 通过数据库供应商特定的网络协议(仍然带有套接字)。

通常(巧合的是),类型号越高,JDBC 驱动程序的性能越好。


答案 2

我相信这可以追溯到Sun最初(1997)对JDBC的介绍

我们目前所知道的 JDBC 驱动程序通常属于以下四类之一:

  1. JDBC-ODBC 桥接器加 ODBC 驱动程序:JavaSoft 桥接产品通过 ODBC 驱动程序提供 JDBC 访问。请注意,必须在使用此驱动程序的每台客户端计算机上加载 ODBC 二进制代码,在许多情况下必须加载数据库客户端代码。因此,这种驱动程序最适合于客户端安装不是主要问题的企业网络,或者适用于在三层体系结构中用 Java 编写的应用程序服务器代码。

  2. Native-API 部分 Java 驱动程序:这种类型的驱动程序将 JDBC 调用转换为对 Oracle、Sybase、Informix、DB2 或其他 DBMS 的客户端 API 的调用。请注意,与网桥驱动程序一样,此类型的驱动程序要求在每台客户端计算机上加载一些二进制代码。

  3. JDBC-Net 纯 Java 驱动程序:此驱动程序将 JDBC 调用转换为独立于 DBMS 的网络协议,然后由服务器将其转换为 DBMS 协议。这个网络服务器中间件能够将其纯Java客户端连接到许多不同的数据库。使用的具体协议取决于供应商。通常,这是最灵活的 JDBC 替代方案。此解决方案的所有供应商都可能提供适合 Intranet 使用的产品。为了使这些产品也支持 Internet 访问,它们必须处理 Web 对安全性、通过防火墙进行访问等的额外要求。

  4. 原生协议纯Java驱动:这种驱动将JDBC调用直接转换为DBMS使用的网络协议。这允许从客户端计算机直接调用 DBMS 服务器,是 Intranet 访问的绝佳解决方案。由于这些协议中有许多是专有的,因此数据库供应商本身将是主要来源。一些数据库供应商正在进行这些测试。

预计驱动程序类别 3 和 4 最终将成为从 JDBC 访问数据库的首选方式。驱动程序类别 1 和 2 是尚不可用的直接纯 Java 驱动程序的临时解决方案。在需要连接器的类别 1 和 2(下表中未显示)可能存在变体,但这些通常是不太理想的解决方案。类别 3 和 4 提供了 Java 的所有优点,包括自动安装(例如,使用使用它的小程序下载 JDBC 驱动程序)。


请注意,他们实际上并没有将它们命名为类型1,2,3和4,而是JDBC-ODBC桥接加上ODBC驱动程序,Native-API部分Java驱动程序,JDBC-Net纯Java驱动程序和Native协议纯Java驱动程序。每个名字都是一口,所以人们立即开始用他们的号码来称呼他们。


推荐