【发布时间】:2016-02-02 08:33:29
【问题描述】:
在 JDBC 中,当你需要获取连接时,你必须先加载一个类 Driver。您可以通过调用 Class.forName 来实现。
Class.forName("org.postgresql.Driver");
该类方法加载一个类并将其添加到DriverManager持有者:
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException e) {
e.printStackTrace();
}
}
然后要获得连接,您必须调用静态方法getConnection。
Connection connection = DriverManager.getConnection(DbUrl, Username, Password);
getConnection 方法使用单独的线程创建连接等等...
我的问题是为什么 JDK 的作者使用静态方法:Class.forName、getConnection。 “静态”方法的作用是什么?
【问题讨论】:
-
我认为
Class.forName的原因是为了验证类可以在类路径中找到——它不会加载任何东西。否则,当您使用特定的 jdbc 连接时,您的程序会失败 -
Class.forName("org.postgresql.Driver");不再需要 -
至于 DriverManager.getConnection 是静态的,为什么不呢?必须先创建 DriverManager 的实例有什么好处?
-
我的问题一般与静态方法在 JDBC 中的作用有关。为什么我们需要使用它们而不是实例方法。
标签: java