Java 关于JDBC驱动程序管理器组件和DriverManager类的混淆

Java 关于JDBC驱动程序管理器组件和DriverManager类的混淆,java,jdbc,Java,Jdbc,据介绍,JDBC的“通用”组件包括: 驱动管理器 驾驶员 联系 陈述 結果集 SQLException 然而,根据Java服务器编程Java EE 6黑皮书,JDBC的“主要”组件是: JDBCAPI 驱动管理器 JDBC测试套件 JDBC-ODBC桥 所以基本上我所理解的是JDBC的组件是black book和tutorials point提到的列表的联合体。我说得对吗 本书进一步描述了JDBC API的体系结构包括以下内容: 驱动管理器 驾驶员 联系 陈述 准备好的声明 可调用语句 結果集

据介绍,JDBC的“通用”组件包括:

驱动管理器 驾驶员 联系 陈述 結果集 SQLException 然而,根据Java服务器编程Java EE 6黑皮书,JDBC的“主要”组件是:

JDBCAPI 驱动管理器 JDBC测试套件 JDBC-ODBC桥 所以基本上我所理解的是JDBC的组件是black book和tutorials point提到的列表的联合体。我说得对吗

本书进一步描述了JDBC API的体系结构包括以下内容:

驱动管理器 驾驶员 联系 陈述 准备好的声明 可调用语句 結果集 数据库元数据 结果集元数据 SQLData 斑点 克洛布 现在,本书清楚地将驱动程序管理器和JDBCAPI定义为JDBC的两个不同组件。但是,它将DriverManager类列为JDBCAPI的一部分

那么,JDBCAPI的DriverManager类和JDBC的驱动程序管理器组件之间到底有什么相似之处和不同之处呢

那么,JDBCAPI的DriverManager类和JDBC的驱动程序管理器组件之间到底有什么异同呢

没有区别,这是两种方式提到的同一件事。阅读javadoc和与JDBC相关的Java教程部分,了解它的功能

此外,黑皮书还进一步描述了JDBC API的体系结构包括以下内容:

驱动管理器 驾驶员 联系 陈述 准备好的声明 可调用语句 結果集 数据库元数据 结果集元数据 SQLData 斑点 克洛布 这是JDBC包含的类的一个相当完整的枚举。 其中一些是一直使用的驱动程序管理器、驱动程序、连接、语句、PreparedStatement、CallableStatement、Resultset,其他您需要的更少。
再次查看Javadoc和教程,看看每个人都在做什么,以及如何将它们粘合在一起。实际上,我建议从教程开始,javadoc更加枯燥,包含了大量信息,但解释较少

它们是一回事。DriverManager类是JDBCAPI的一部分。它管理数据库驱动程序列表,使用通信子协议将来自java应用程序的连接请求与适当的数据库驱动程序相匹配

驱动程序管理器能够支持连接到异构数据库的多个并发数据库

为了理解这个驱动程序管理器相对于java应用程序和数据库驱动程序的位置,这里有一个图像

JDBC API提供应用程序到驱动程序管理器的连接,JDBC驱动程序API提供JDBC管理器到驱动程序的连接


来源:

我认为最后一点是一个同义词DriverManager==驱动程序管理器;它是一个加载提供者的特殊类。在Java 8中,JDBC-ODBC桥已经被删除,Java.sql下的各种类都是JDBC的一部分。最后你真的在试图解决一个问题吗?我对JDBC有些困惑。这对我来说是一个合法的问题:如果它们是相同的东西,那么为什么它们被列为不同的组件?正如JDBC API和驱动程序管理器是JDBC@Smrita因为JDBCAPI依赖于驱动程序管理器来提供连接可能使用本机代码。而且,如果没有JDBC API,驱动程序管理器绝对没有任何作用。@ElliottFrisch yoou是在暗示JDBC中有一种机制,它将驱动程序加载到应用程序中以获得连接,并且它的一些机制是通过DriverManager类实现的?是这样吗?@Smrita我并不是在暗示,我只是直截了当地说出来。部分由于Mustang中包含的JavaSE服务提供程序机制,Java开发人员不再需要使用Class.forName之类的代码显式加载JDBC驱动程序来注册JDBC驱动程序。DriverManager类通过在调用DriverManager.getConnection方法时自动定位合适的驱动程序来解决此问题。