为什么 JDBC 是动态加载而不是导入?

Why is JDBC dynamically loaded instead of imported?

在JDBC中,我只看到使用

的示例
Class.forName("com.mysql.jdbc.Driver", true, cl);

并且还没有看到有人使用

import com.mysql.jdbc.Driver;

是不是因为我们要让一个驱动包在执行时动态提供,所以只有在执行时才能知道?

如果我们在执行前有已知的固定驱动包,是否可以采用第二种方式?您如何比较这两种方式?

谢谢。

I only see examples using

那么您正在阅读关于 JDBC 的非常古老的东西。这已经没有用了,已经用了很长时间了。 有必要加载驱动程序 class 以确保已加载必要的驱动程序,并能够在尝试这样做之前处理与提供的数据库 URL 的连接。

JDBC 抽象是您访问数据库所需的全部,您不应该关心您正在处理的是 MySQL 驱动程序还是 Oracle 驱动程序,或者其他任何东西。在运行时动态加载驱动程序,允许从编译 class 路径中删除驱动程序 jar 文件,并确保您仅依赖标准 JDBC classes 和接口。

请注意,除了允许您在代码中使用简单的 class 名称外,导入 class 没有任何作用。它不等同于加载和初始化 class,这是第一个片段所做的。