什么是JDBC
JDBC API 主要在java.sql包中,扩展的内容位于javax.sql包中
DriverManager : 管理一组数据库驱动程序的基本服务,通过通信子协议将java的应用程序与数据库驱动程序进行匹配
Driver : 此接口处理与数据库服务器的通信,是每个数据库驱动都必须继承的接口。在Driver的实现类初始化的时候,会将其自身的信息注册到DriverManager中方便管理。
使用JDBC的基本步骤
step1 : 导入JDK的包,import.java.sql.*
step2 : 注册JDBC驱动程序
step3 : 打开一个连接,使用DriverManager.getConnection方法创建一个Connection对象,表示与数据库的物理连接
step4 : 执行查询,使用Statement构建和提交SQL语句到数据库
step5 : 从结果集提取对象,需要使用对应的ResultSet类
step6 : 清理环境,关闭所有的数据库资源

DriverManager获取连接的时序图:

Class.forName
当我们使用JDBC的时候,在老版本中需要手动加载驱动类
Class.forName("com.mysql.jdbc.Driver");
SPI的定义
概念的定义:为了实现在模块装配的时候可以不在程序中动态指明,需要一种服务发现机制,JDK内置的SPI(service provider interface)可以实现这个功能:为每个接口实现服务实现的机制。这个实现的机制有点类似IOC,将装配的控制权转移到程序外(在平常的开发中,如果有模块化开发的同学应该会有体会)
面向对象的设计里面,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。因此便有了SPI这种服务发现机制
SPI的使用
step1 : 定义接口类,实现具体的接口类
step2 : Resource下面创建META-INF/services目录里创建一个以服务接口命名的文件
step3 : 使用ServiceLoader查找接口的全部实现类
