JDBC还在使用Class.forName?
程序员文章站
2022-05-30 09:33:32
...
很多朋友自己管理连接的时候,还是习惯使用下面的方式来获取连接。
@Test
public void testGetConnection() throws SQLException {
// Class.forName("com.mysql.jdbc.Driver");//新版本不需要了
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF8", "username", "password");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select id from test");
while (resultSet.next()){
System.out.println(resultSet.getInt("id"));
}
}
其实在新版本的JDK中已经不需要,Class.forName(“com.mysql.jdbc.Driver”);这种非常不优雅的代码了。
注意:这里说的JDK新版本,不是指高版本,而是新发行的JDK版本,我检查了1.6和1.7的新版本的源码,发现都已经做了处理。
下面的方法是在ServiceLoader中的方法,JDBC的Driver就通过它加载。
如果不了解这个可以参考一下:Java SPI
我们可以看到通过ServiceLoader查找的类,已经加载了,不过并没有执行初始化。
所以,在我们的代码中,并不需要:
Class.forName(“com.mysql.jdbc.Driver”);