是否需要Class.forName()机制?

Faz*_*zoM 5 java database tomcat database-connection jdbc

以下代码:

Class.forName(dbDriver); // "org.postgres.Driver" or "com.mysql.jdbc.Driver"
Run Code Online (Sandbox Code Playgroud)

是/必须打开JDBC连接.

我听说现代JDBC驱动程序不再需要它.但是我不能在我的项目中删除它,因为我得到了No suitable driver found例外.我正在使用postgresql-9.1-901.jdbc3.jarJava7和tomcat7.

什么时候可以省略Class.forName(...)构造?

dis*_*ame 10

自JDBC 4.0以来不需要Class.forName().

以下是Java Tutorials on JDBC的摘录.

在以前的JDBC版本中,要获得连接,首先必须通过调用Class.forName方法来初始化JDBC驱动程序.此方法需要java.sql.Driver类型的对象.每个JDBC驱动程序都包含一个或多个实现接口java.sql.Driver的类.Java DB的驱动程序是org.apache.derby.jdbc.EmbeddedDriver和org.apache.derby.jdbc.ClientDriver,而MySQL Connector/J的驱动程序是com.mysql.jdbc.Driver.请参阅DBMS驱动程序的文档以获取实现接口java.sql.Driver的类的名称.

在类路径中找到的任何JDBC 4.0驱动程序都会自动加载.(但是,必须使用方法Class.forName手动加载JDBC 4.0之前的任何驱动程序.)