在连接到数据库时,Class.forName(“oracle.jdbc.driver.OracleDriver”)的实际用途是什么?

2022-08-31 10:30:56

什么命令

Class.forName("oracle.jdbc.driver.OracleDriver")

在连接到 Oracle 数据库时究竟会这样做吗?有没有另一种方法可以做同样的事情?


答案 1

它获取对具有 FQCN(完全限定类名)的类对象的引用。oracle.jdbc.driver.OracleDriver

在连接到数据库方面,它不会“执行”任何操作,除了确保指定的类由当前类装入器装入。书写之间没有根本的区别

Class<?> driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
// and
Class<?> stringClass = Class.forName("java.lang.String");

Class.forName("com.example.some.jdbc.driver")调用显示在使用 JDBC 的旧代码中,因为这是加载 JDBC 驱动程序的传统方式

来自 Java 教程

在以前版本的 JDBC 中,要获取连接,首先必须通过调用方法初始化 JDBC 驱动程序。此方法需要一个 类型为 的对象。每个 JDBC 驱动程序都包含一个或多个实现接口的类。
...
将自动加载在类路径中找到的任何 JDBC 4.0 驱动程序。(但是,您必须使用该方法手动加载 JDBC 4.0 之前的任何驱动程序。Class.forNamejava.sql.Driverjava.sql.DriverClass.forName

进一步阅读(阅读:这是一个傻瓜的问题)


答案 2

它注册驱动程序;形式上的东西:

public class SomeDriver implements Driver {
  static {
    try {
      DriverManager.registerDriver(new SomeDriver());
    } catch (SQLException e) {
      // TODO Auto-generated catch block
    }
  }

  //etc: implemented methods
}

推荐