JDBC源码相关(如何注册JDBC驱动&连接数据库)

使用JDBC的第一步是注册JDBC驱动程序,但是想不通怎么通过下面这句代码完成..
Class.forName("com.mysql.jdbc.Driver");

网上冲浪后,总结如下:

1.首先弄明白Class.forName做了什么?

Class.forName(xxx.xx.xx)返回的是一个类。
Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。

2.在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。
通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。

3.而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBC Driver的 Driver类的代码都必须类似如下:
public class MyJDBCDriver implements Driver {
static {
DriverManager.registerDriver(new MyJDBCDriver());
}
}
既然在静态初始化器中已经进行了注册,所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了。
-->需要继续理解java的反射机制才能理解以上内容:https://www.cnblogs.com/pokid/p/4917948.html
-->因目前首要目标是理解sql协议及使用,所以后续再回来看

posted @ 2018-12-29 17:04  stone2967  阅读(265)  评论(0编辑  收藏  举报