JDBC Driver接口及Driver实现类
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。
在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。
接口 java.sql.Drive
com.mysql.cj.jdbc.Driver到底有什么用?
在我们编写JDBC以及之后的ORM框架中我们都会定义这四个Property,那么 com.mysql.cj.jdbc.Driver的背后含义是什么呢?
以JDBC为例
通过Class.forName找到我们定义的Driver然后调用DriverManager的注册方法
可以看出,通过执行 Class.forName(“com.mysql.cj.jdbc.Driver”)找到了类路径并加载、链接、初始化
为什么说 Class.forName执行到类的初始化阶段,因为初始化阶段会执行到以下 Java 代码场景。
(1)读取或设置一个类的静态字段(被final修饰、已在编译器把结果放入常量池的静态字段除外)的时候以及调用一个类的静态方法的时候。可以看到我们这里正是通过调用 Class.forName找到了com.mysql.cj.jdbc下的Driver类,并调用它的静态语句块
对于类加载的过程可以参考以下链接,Driver向DriverManager注册的过程是Class,forName()使用的经典场景,它会让你理解
第 7 章 虚拟机类加载机制
DriverManager注册Drive
过程参考
Spring及Spring boot 第四章-第一节 java程序访问数据库 JDBC DriverManager