一尘不染

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

sql

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

我们通常ojdbc14在类路径中包含类似(针对Java 1.4的驱动程序)的驱动程序,并且在程序Class.forName中使用它来使用它。

与大多数其他罐子的进口ojdbc14都没有,他们是从java.sql哪个是rt.jar自己。那么,每种驱动程序使用哪种类型的驱动程序(1,2,3,4)?


阅读 159

收藏
2021-03-17

共1个答案

一尘不染

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

您还使用了来自Oracle的ojdb14.jar,可能具有“瘦”
jdbc配置,这意味着您正在使用4类驱动程序配置。通过这样的配置,您将只需要使用数据库访问程序来部署JDBC jar文件。

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

类型2驱动程序再次使用Java(JDBC)API。但是,它们将调用桥接到C或C
++样式的共享库中,该库然后处理实际的连接。如果驱动程序的优化速度如此之快,以至于JNI设置/拆卸调用的成本可以忽略不计,那么它可能会胜过4型驱动程序。

类型3驱动程序基本上将请求代理(或中继)到另一个网络资源。通常,这会带来额外的网络损失,但是,这并不能说明实际性能。

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

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

2021-03-17