JDBC是JAVA十三大规范之一,由JAVA定义顶级接口API,各个数据库厂商去实现。
常用的四大接口——Driver,DriverManager,Connection,Statement。
这里先给出结论:
所谓的JAVA制定标准,就是指JAVA给出接口,厂家各自去实现。
比如Driver,Connection,Statement等都是有接口,有实现。
通过向DriverManager注册不同Driver来确定Connection,Statement的类型。
以下是JDBC的一个完整过程:
Driver
java.sql下面的Driver
com.mysql.jdbc中的mysql实现
可以看到继承了一个类,实现了java.sql.Driver接口。
最核心的操作就是向DriverManager中注册当前Driver,这就是切换驱动的核心动作。
跟入父类,发现父类负责来实现了java.sql.Driver接口中的方法。
其实这里思考会发现父类已经实现了java.sql.Driver接口,Driver可以不用在实现的,设计者在这里的这一步显得多余了。
该类的成员变量其实也就是连接MySQL必要的一些配置参数。
所以其实这个类就是Mysql驱动的核心。是为Mysql量身定做的驱动。
DriverManager
从mysql的Driver中跟入DriverManager,会发现DriverManager属于java.sql。
也就是说验证了之前的说法,JAVA提供了接口,不同数据库厂商去自行实现。Driver。
然后通过注册Driver到DriverManager中的方式来获取对应数据库类型的连接。
跟入registerDriver
再跟入registerDriver,发现它将传过来的mysqlDriver加入了一个list
Connection
这是java.sql中的Connection接口
这是mysql对Connection接口的实现
Statement
同理,这是java.sql中的接口
这是com.mysql.jdbc中的实现
同理resultSet等其他也是这种实现原理。