代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

为什么JDBC是动态加载的而不是导入的?[复制品]

  •  4
  • Tim unnamed eng  · 技术社区  · 7 年前

    在jdbc中,我只看到使用

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

    还没见过有人用

    import com.mysql.jdbc.Driver;
    

    是因为我们希望在执行时动态地提供驱动程序包,所以只能在执行时知道吗?

    如果在执行之前我们已经知道了一个固定的驱动程序包,是否可以采用第二种方法?你如何比较这两种方法?

    谢谢。

    1 回复  |  直到 7 年前
        1
  •  8
  •   JB Nizet    7 年前

    我只看到使用

    然后你在读关于jdbc的老东西。在相当长的一段时间里,这已经不再有用了。它 必须加载驱动程序类,以确保必要的驱动程序加载,并能够处理连接到所提供的数据库URL,然后尝试这样做。

    jdbc抽象是访问数据库所需的全部,您不应该关心您是在处理mysql驱动程序还是oracle驱动程序,或者其他什么。在运行时动态加载驱动程序,允许从编译类路径中删除驱动程序jar文件,并确保只依赖标准jdbc类和接口。

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