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

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

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

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

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

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

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

我相信它可以追溯到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驱动程序。 每个名字都是满口的,所以人们立即开始用他们的号码来引用它们。

这些数字不是很有用。 我觉得按照以下方式思考它会更有用:

  • 本地API(1,2)与网络协议(3,4)
  • 数据库无关(奇数)与数据库特定(偶数)

我永远记不住这些数字,但当有人说“我们在这里使用4型驱动程序”时,我可以问两个是 – 没有问题可以知道他们在说什么。

简而言之,每种类型使用不同的策略,并且对于不同类型的实现更好地工作。 我不认为这是懒惰。 我认为能够更轻松,更清楚地找出哪种类型最适合您的特定情况。

http://en.wikipedia.org/wiki/JDBC_driver

似乎没有任何逻辑,只是简单的懒惰我猜!

更新:问题是是否有一些逻辑来调用类型1,类型2等而不是调用类型apple,类型橙色:)。 我理解驱动程序类型是不同的,工作/不工作的情况,但为什么名称“类型1”而不是“类型JDBC-ODBC”或“类型JO”没有理由AFAIK。