什么是JDBC驱动程序的1,2,3或4型?
要使用Java连接到数据库,我们大多数人都使用JDBC API。
我们通常在类路径中包含ojdbc14
(适用于Java 1.4)等驱动程序,在程序中我们使用Class.forName
来使用它。
与大多数其他jar不同,导入不是来自ojdbc14,它们来自java.sql
,它位于rt.jar
本身。 那么每种驱动器使用哪种类型的驱动器(1,2,3,4)?
您正在使用java.sql类中的jdbc接口,因此驱动程序的类型不会对您的代码产生任何逻辑影响,它只会影响运行时/部署。
您还使用了Oracle的ojdb14.jar,可能使用“瘦”jdbc配置,这意味着您使用的是类型4驱动程序配置。 使用这样的配置,您只需要将JDBC jar文件与数据库访问程序一起部署。
其他选项包括JDBC桥,它实际上意味着包装在JDBC服装中的ODBC连接。 这意味着您必须配置系统以获得正确的ODBCfunction,然后使用JAR文件访问ODBC。 由于通过ODBC额外“跳”数据,人们会认为它比4型访问慢一点; 但是,对于特定情况,ODBC有可能在很大程度上进行优化,额外跳可忽略不计。 与大多数性能问题一样,通过测试(在您的环境中)发现真相。
类型2驱动程序再次使用Java(JDBC)API; 但是,它们将调用桥接到C或C ++样式的共享库,然后处理真正的连接。 如果驱动程序优化得如此之快以至于JNI建立/拆除调用的成本可以忽略不计,那么它可能会胜过4类驱动程序。
类型3驱动程序基本上将请求代理(或中继)到另一个网络资源。 这通常会导致额外的网络攻击,但同样,这并没有说明实际的性能。
Type 4驱动程序是您可能想要坚持使用的驱动程序。 Java程序直接连接到数据库,这意味着如果出现问题,它将完全在程序的JVM中进行连接(类型1,它在ODBC层中,类型2在本机编译代码中,键入3它在远程网络代理中)。
再一次,这与function无关; 但是,它们都会影响如何部署,如何调试以及如何配置数据库连接。
“类型”指的是驱动程序如何实现API。 这四种类型是:
类型1:JDBC-ODBC Bridge驱动程序(Bridge)
类型2:Native-API /部分Java驱动程序(Native)
类型3:AllJava / Net协议驱动程序(中间件)
类型4:所有Java / Native协议驱动程序(纯)
它们将具有不同的性能特征。 请参阅此链接以获取更详细的评论。
+------+---------------------------------+-------------------------------------------------------------------------------------------+ | 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. (eg: 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. | +------+---------------------------------+-------------------------------------------------------------------------------------------+
ojdbc14.jar
:提供jdbc驱动程序,它可以帮助您连接到DB。
java.sql.*
:为您提供在数据库中查询数据的api,并且需要数据库连接来执行驱动程序帮助的操作。
因此,他们可以扮演不同的角色,并且需要与数据库交谈。
来到驱动程序的类型,以及它们与DB交互的不同方式,它们对它们进行分类但最终目标是相同的,即连接到数据库。
这里详细解释了驱动程序的类型: http : //en.wikipedia.org/wiki/JDBC_driver