Class.forName()
完全不与JDBC直接相关。它只是加载一个类。
大多数JDBC驱动程序类通过调用在自己的静态初始化器中注册自己registerDriver()。
registerDriver()
是真正不需要调用的真正调用(除非你编写自己的JDBC驱动程序)。
请注意,在JDBC 4 中,如果你的JDBC驱动程序是最新的,则不需要它们中的任何一个,因为可以使用服务定位机制找到驱动程序(即,只需忽略该调用并照常打开连接)。有关详细信息,请参见文档DriverManager:
在DriverManager的方法getConnection
和getDrivers
已得到增强,支持Java标准版服务提供商的机制。JDBC 4.0驱动程序必须包含该文件Meta-INF/services/java.sql.Driver
。该文件包含的JDBC驱动程序实现的名称java.sql.Driver
。例如,要加载my.sql.Driver类,该Meta-INF/services/java.sql.Driver
文件将包含以下条目:
my.sql.Driver
应用程序不再需要使用显式加载JDBC驱动程序Class.forName()
。当前使用JDBC驱动程序加载的现有程序Class.forName()
将继续运行而无需修改。