首页 >数据库 >mysql教程 >JDBC 驱动程序注册仍然需要 Class.forName() 吗?

JDBC 驱动程序注册仍然需要 Class.forName() 吗?

Patricia Arquette
Patricia Arquette原创
2025-01-05 04:09:39401浏览

Is Class.forName() for JDBC Driver Registration Still Necessary?

JDBC 驱动程序注册:Class.forName() 弃用

该问题引发了对使用 Class.forName 注册 JDBC 驱动程序的过时要求的担忧(),如之前的 Stack Overflow 讨论中所建议的。它指出,从 Java 6 开始,DriverManager 使用系统属性“jdbc.drivers”来检索适当的驱动程序,从而消除了此步骤的需要。然而,发帖者在打印属性时遇到空值。

答案:

问题不在于“jdbc.drivers”属性,而在于一个概念Java 6 和 JDBC4 中引入的称为“服务提供者”。这里,JVM 在启动期间自动检测已知接口的实现。兼容的 JDBC 驱动程序利用此机制,允许 DriverManager 轻松注册它们。因此,仅当驱动程序支持此功能时,Class.forName() 才变得多余。

服务注册是由驱动程序 JAR 文件的 META-INF 目录中存在“services”目录触发的。该目录必须包含一个文本文件,其中包含已实现接口的名称(例如 JDBC 驱动程序的“java.sql.Driver”)并指定实现类。

以上是JDBC 驱动程序注册仍然需要 Class.forName() 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn