【JDBC】关于JDBC的一些思考

362 阅读2分钟

什么是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查找接口的全部实现类

JDBC中SPI的应用