最佳实践

Java如何调用Halo数据库

D
DBA 团队
2023年10月18日

什么是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 的架构设计和各个组件间的调用流程做了详细说明,后续我会对各个接口进行详细介绍,敬请期待。


最新文章

安全公告
2025年04月11日

羲和(Halo)数据库关键补丁更新公告 - 2025年4月

安全公告
2024年06月20日

羲和(Halo)数据库关键补丁更新公告 - 2024年6月

安全公告
2023年12月18日

羲和(Halo)数据库关键补丁更新公告 - 2023年12月