JDBC驱动程序类型号之间的区别

gmh*_*mhk 19 java sql database drivers jdbc

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

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

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

Bal*_*usC 22

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

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

通常(只是巧合),类型编号越高,JDBC驱动程序的执行效果越好.


Mat*_*ynn 10

我相信它可以追溯到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. Native-protocol纯Java驱动程序:这种驱动程序将JDBC调用直接转换为DBMS使用的网络协议.这允许从客户端计算机直接调用DBMS服务器,是Intranet访问的绝佳解决方案.由于许多协议都是专有的,因此数据库供应商本身将成为主要来源.一些数据库供应商正在进行中.

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


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