美文网首页
JDBC驱动类的加载过程

JDBC驱动类的加载过程

作者: zhuke | 来源:发表于2017-09-01 19:39 被阅读0次

    我们在刚开始学会使用JDBC操作数据库时常常使用如下代码新建一个数据库连接:

    
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn 
        = DriverManager.getConnection("jdbc:mysql://127.0.0.1/test?useServerPrepStmts=true&cachePrepStmts=true", "root", "root");        
    

    那么为什么以上代码能够是给定的驱动类,注册到了DriverManager当中呢?

    首先,Class.forName("com.mysql.jdbc.Driver");会将com.mysql.jdbc.Driver类加载到JVM中,而Driver类的源代码中包含一个静态代码块,会在类加载时调用:

        //
        // Register ourselves with the DriverManager
        //
        static {
            try {
                java.sql.DriverManager.registerDriver(new Driver());
            } catch (SQLException E) {
                throw new RuntimeException("Can't register driver!");
            }
        }
    

    通过Class.forName()的方式加载Driver类,Driver类中的静态代码块在类加载时,将自身的一个新建实例注册绑定到DriverManager上。

    相关文章

      网友评论

          本文标题:JDBC驱动类的加载过程

          本文链接:https://www.haomeiwen.com/subject/cfbkjxtx.html