Class.forName(JDBC_DRIVER) - 它是否已过时?
尽管声称 Java 6 不推荐使用 Class.forName(JDBC_DRIVER) ,据观察,某些应用程序在没有显式注册 JDBC 驱动程序的情况下仍然可以正常运行。这种行为引发了人们对该方法必要性的质疑。
深入探讨争议
当 System.getProperty("jdbc.drivers") 返回 null 时,表明系统属性方法在驱动程序注册中不起作用。相反,难题在于 Java 6 和 JDBC4 中引入了“服务提供者”概念。
服务提供者机制
在这个机制中,已知接口的实现可以在启动期间被 JVM 检测到。符合此概念的驱动程序由 DriverManager 自动注册,从而无需使用 Class.forName()。但是,这仅适用于支持此机制的驱动程序。
服务目录的角色
当驱动程序的 JAR 文件中存在服务目录时,将启动服务注册,位于 META-INF 目录内。在此目录中,必须存在一个文本文件,其中包含已实现接口的名称(用于 JDBC 驱动程序的 java.sql.Driver)和实现类。
结论
如果 JDBC 驱动程序不支持服务提供者机制,则可能仍然需要 Class.forName(JDBC_DRIVER) 方法。但是,对于这样做的驱动程序,不再需要显式注册,因为 DriverManager 会自动检测并加载它们。
以上是现代 Java 中的'Class.forName(JDBC_DRIVER)”是否已过时?的详细内容。更多信息请关注PHP中文网其他相关文章!