什么是JDBC驱动程序的1,2,3或4型?

时间:2013-07-15 16:06:52

标签: java sql jdbc

要使用Java连接数据库,我们大多数人都使用JDBC API。

我们通常在类路径中包含ojdbc14(适用于Java 1.4)等驱动程序,在程序中我们使用Class.forName来使用它。

与大多数其他罐不同,进口不是来自ojdbc14,而是来自java.sql本身的rt.jar。那么这些驱动器(1,2,3,4)使用哪种类型?

5 个答案:

答案 0 :(得分:17)

您正在使用java.sql类中的jdbc接口,因此驱动程序的类型不会对您的代码产生任何逻辑影响,它只会对运行时/部署产生影响。

您也在使用Oracle的ojdb14.jar,可能使用“瘦”jdbc配置,这意味着您使用的是type-4驱动程序配置。使用这样的配置,您只需要将JDBC jar文件与数据库访问程序一起部署。

其他选项包括JDBC桥,它实际上意味着包含在JDBC服装中的ODBC连接。这意味着您必须配置系统以获得正确的ODBC功能,然后使用JAR文件访问ODBC。由于通过ODBC额外“跳跃”数据,人们可能会认为它比第4类访问慢一点;但是,对于特定情况,ODBC有可能在很大程度上进行优化,额外的跳数可以忽略不计。与大多数性能问题一样,通过测试(在您的环境中)发现真相。

type-2驱动程序再次使用Java(JDBC)API;但是,它们将调用桥接到C或C ++样式的共享库,然后处理真正的连接。如果驱动程序优化得如此之快以至于JNI建立/拆除调用的成本可以忽略不计,那么它可能会胜过4类驱动程序。

类型3驱动程序基本上将请求代理(或中继)到另一个网络资源。这通常会导致额外的网络攻击,但同样,这并没有说明实际的性能。

类型4驱动程序是您可能想要坚持使用的驱动程序。 Java程序直接连接到数据库,这意味着如果出现问题,它将完全在程序的JVM中进行连接(类型1,它在ODBC层中,类型2在本机编译代码中,键入3它在远程网络代理中。)

同样,这些都与功能无关;但是,它们都会影响如何部署,如何调试以及如何配置数据库连接。

答案 1 :(得分:12)

“type”指的是驱动程序如何实现API。这四种类型是:

类型1:JDBC-ODBC Bridge驱动程序(Bridge)

类型2:Native-API /部分Java驱动程序(Native)

类型3:AllJava / Net协议驱动程序(中间件)

类型4:所有Java / Native协议驱动程序(纯)

它们将具有不同的性能特征。有关更详细的评论,请参阅此link

答案 2 :(得分:7)

+------+---------------------------------+-------------------------------------------------------------------------------------------+
| Type |             Driver              |                                        Descripiton                                        |
+------+---------------------------------+-------------------------------------------------------------------------------------------+
|    1 | JDBC-ODBC Bridge (bridge)       | Translates all JDBC calls into ODBC calls.                                                |
|    2 | Native API (native)             | Translates all JDBC calls into native API database calls. (e.g: DLL on windows using JNI) |
|    3 | Network Protocol(middleware)    | Translates all JDBC calls into database independent middleware specific calls.            |
|    4 | Native Protocol(pure java thin) | Translates all JDBC calls directly into database calls.                                   |
+------+---------------------------------+-------------------------------------------------------------------------------------------+

答案 3 :(得分:4)

ojdbc14.jar:提供jdbc驱动程序,它将帮助您连接到数据库。

java.sql.*:为您提供在数据库中查询数据的api,并需要一个数据库连接来执行驱动程序帮助的地方。

因此他们可以扮演不同的角色,并且需要与数据库交谈。

来到驱动程序的类型,以及它们与DB交互的不同方式,它们对它们进行分类,但最终目标是相同的,即连接到数据库。

此处详细说明了驱动程序的类型:http://en.wikipedia.org/wiki/JDBC_driver

答案 4 :(得分:0)

简单来说

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

->它使用ODBC

->将JDBC调用转换为ODBC调用

->它的缺点是您需要安装ODBC或可以说它取决于ODBC(由Microsoft提供)

->它的性能很差,因为它将JDBC调用转换为ODBC调用

Type2(本机API)

->使用数据库的客户端库

->将JDBC调用转换为数据库Api的本地调用

->比JDBC-ODBC(Type1)具有更好的性能,因为它不依赖或不使用ODBC

Type3(网络协议)

->它使用Application Server(中间件)

->服务器将jdbc调用转换为特定于供应商的数据库协议

->客户端需要网络支持

->网络协议驱动程序的维护成本很高

Type4(薄)

->与数据库直接交互

->不需要任何库

->由数据库供应商编写,因此最好使用它们