问题
Following code:
Class.forName(dbDriver); // "org.postgres.Driver" or "com.mysql.jdbc.Driver"
is / was necessary to open JDBC connection.
I have heard that it is no longer needed with modern JDBC drivers. However I can't remove it in my project, because I'm getting No suitable driver found
exception. I am using postgresql-9.1-901.jdbc3.jar
, Java7 and tomcat7.
When can I omit Class.forName(...)
construct?
回答1:
Class.forName() is not needed since JDBC 4.0.
Here is an excerpt from Java Tutorials on JDBC.
In previous versions of JDBC, to obtain a connection, you first had to initialize your JDBC driver by calling the method Class.forName. This methods required an object of type java.sql.Driver. Each JDBC driver contains one or more classes that implements the interface java.sql.Driver. The drivers for Java DB are org.apache.derby.jdbc.EmbeddedDriver and org.apache.derby.jdbc.ClientDriver, and the one for MySQL Connector/J is com.mysql.jdbc.Driver. See the documentation of your DBMS driver to obtain the name of the class that implements the interface java.sql.Driver.
Any JDBC 4.0 drivers that are found in your class path are automatically loaded. (However, you must manually load any drivers prior to JDBC 4.0 with the method Class.forName.)
来源:https://stackoverflow.com/questions/33391496/is-class-forname-mechanism-needed