欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

JDBC还在使用Class.forName?
我们可以看到通过ServiceLoader查找的类,已经加载了,不过并没有执行初始化。

所以,在我们的代码中,并不需要:

Class.forName(“com.mysql.jdbc.Driver”);

相关标签: Java