JDBC驱动类的加载过程
我们在刚开始学会使用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!");
}
}
【JDBC驱动类的加载过程】通过Class.forName()的方式加载Driver类,Driver类中的静态代码块在类加载时,将自身的一个新建实例注册绑定到DriverManager上。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 为什么你的路演总会超时()
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 使用composer自动加载类文件
- 一个健康的APP和健全的人格大体类似
- 两感一练
- 种树郭橐驼传(文言句式+古今异义+词类活用+通假字)
- 归乡-序章(世界伊始,人类无所依靠,我的故事就从这里开始...)
- jQuery插件