什么是JDBC
之前有过对 HaloJDBC 介绍,那篇文章更侧重于对 HaloJDBC 的使用,本文将从底层原理、架构结构介绍 JDBC。
Java 如果想调用数据库必须通过 Java 数据库连接,简称 JDBC。它是 Java 语言中用来规范客户端程序如何访问数据库的应用程序接口(API)。通过 JDBC API 可以访问绝大多数的数据源,但要访问特定数据库系统的数据,需要一个基于 JDBC 技术的驱动程序与之适配。Halo 数据库已经完成了该适配工作。驱动程序可能纯粹是用 Java 编程语言编写的,也可能是 Java 与 Java Native Interface(JNI)本机方法的混合实现。Halo 数据库的 JDBC 驱动程序是纯 Java 编写的。
JDBC架构
JDBC API 支持两层和三层处理模型进行数据库访问,但在一般的 JDBC 体系结构中由两层组成:
• JDBC API:提供了应用程序对 JDBC 的管理连接。
• JDBC Driver API:支持 JDBC 管理到驱动器的连接。
JDBC API 通过驱动程序管理器(DriverManager)和数据库特定的驱动程序,提供对异构数据库的透明连接。
JDBC 驱动程序管理器可确保为每个数据源选择正确的驱动程序,并支持多个并发驱动程序同时连接到多个异构数据库。
以下是 JDBC 结构图,它显示了驱动程序管理器、JDBC 驱动程序和 Java 应用程序的位置关系:

常用的JDBC组件
JDBC API 提供了以下核心接口和类:
• DriverManager:管理数据库驱动程序列表,根据通信子协议匹配并加载正确的驱动程序以建立数据库连接。
• Driver:处理与数据库服务器的底层通信。通常不直接使用,而是由 DriverManager 内部调用。
• Connection:表示与数据库的连接上下文,所有数据库通信都通过此对象进行。
• Statement:用于创建并执行 SQL 语句的对象。其子接口(如 PreparedStatement、CallableStatement)支持参数化查询和存储过程调用。
• ResultSet:保存执行 SELECT 语句后从数据库返回的数据,支持通过迭代方式逐行读取结果。
• SQLException:用于捕获和处理数据库操作过程中发生的异常。
JDBC的执行流程
第一步:注册驱动(告诉 Java 程序即将连接的是哪个数据库)
第二步:获取连接(建立 JVM 进程与数据库进程之间的通信通道;属于重量级操作,使用完毕必须关闭)
第三步:获取数据库操作对象(即 Statement 或其子类,用于执行 SQL 语句)
第四步:执行 SQL 语句(DQL、DML 等),并返回结果集(如适用)
第五步:处理查询结果集(仅当第四步执行的是 SELECT 语句时才需要此步骤)
第六步:释放资源、关闭连接(使用完资源后必须显式关闭,避免连接泄漏;Java 与数据库间属于进程间通信,通道开启后必须关闭)
以上过程中出现任何错误均由 SQLException 负责处理。
流程图如下:

总结
以上对 JDBC 的架构设计和各个组件间的调用流程做了详细说明,后续我会对各个接口进行详细介绍,敬请期待。