【发布时间】:2011-12-01 13:13:28
【问题描述】:
我知道类加载对于在运行时使用类名加载类很有用。
但是,在我们的项目中使用 JDBC 时,我们知道要使用哪个驱动程序,并且大多数驱动程序管理器字符串是硬编码的。
我的问题是:为什么我们在这里使用Class.forName("JDBC_DRIVER") 加载驱动程序?
为什么我们不能继续在类路径中添加驱动程序?因为我们知道要使用哪个驱动程序 jar。
我相信Class.forName(JDBC_DRIVER) 会将驱动程序加载到DriverManager。这是唯一的原因吗?
编辑 1:
作为其 (DriverManager) 初始化的一部分,DriverManager 类将尝试加载“jdbc.drivers”系统属性中引用的驱动程序类。
应用程序不再需要使用
Class.forName()显式加载 JDBC 驱动程序。当前使用Class.forName()加载 JDBC 驱动程序的现有程序将继续工作而无需修改。
然后当我使用非 oracle 驱动程序时;我需要更改系统属性中的驱动程序名称字符串吗?
【问题讨论】:
-
组,谢谢。现在我明白了 class.forName() 与其他机制(例如调用其静态方法或创建该类的实例)相比,对于加载类很有用。这样我们可以确保在加载时使用静态块只执行一次某些功能。