gpt4 book ai didi

java - 为什么 H2 不需要 JDBC 驱动程序

转载 作者:行者123 更新时间:2023-12-02 02:39:49 30 4
gpt4 key购买 nike

我有一个非常简单的 Java 入门应用程序,使用 H2 内存数据库:

String DB_URL = "jdbc:h2:./test";
try(Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);
Statement stmnt = conn.createStatement() ){
// executing SQLs, getting a result set, etc.
...
}
// Catching & handling exceptions

该应用程序可以工作,但是,我想知道为什么我不必在代码中的任何位置调用 Class.forName(JDBC_DRIVER); ?在所有 H2 快速启动中,他们手动加载类。

最佳答案

您不需要对任何使用时间不长的 JDBC 驱动程序执行此操作。由于Java的服务提供者机制,驱动程序是自动发现的,as documented :

The DriverManager methods getConnection and getDrivers have been enhanced to support the Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers must include the file META-INF/services/java.sql.Driver. This file contains the name of the JDBC drivers implementation of java.sql.Driver. For example, to load the my.sql.Driver class, the META-INF/services/java.sql.Driver file would contain the entry:

my.sql.Driver

Applications no longer need to explictly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.

请注意,与您的问题标题所述相反,JDBC 驱动程序是必要的。使用 Class.forName() 来加载它是不必要的。

关于java - 为什么 H2 不需要 JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679588/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com