什么是JDBC
之前有过对HaloJDBC介绍,那篇文章更侧重于对HaloJDBC的使用,本文将从底层原理,架构结构介绍jdbc。
Java如果想调用数据库必须通过 Java数据库连接,简称JDBC。它是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口(API),通过JDBC API 可以访问绝大多数的数据源,但是JDBC API要访问特定数据库系统数据,需要一个基于JDBC技术的驱动程序和与之适配。当然Halo数据库已经完成了适配的工作。驱动程序可能纯粹是用Java编程语言编写的,也可能是Java编程语言和Java Native Interface(JNI)本机方法的混合编写。要获取特定数据库管理系统的JDBC驱动程序。Halo数据库的JDBC驱动程序是由Java编写的。
JDBC架构
JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成:
JDBC API: 提供了应用程序对JDBC的管理连接。
JDBC Driver API: 支持JDBC管理到驱动器连接。
JDBC API的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据库。
JDBC驱动程序管理器可确保正确的驱动程序来访问每个数据源。该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序。
以下是JDBC结构图,它显示了驱动程序管理器方面的JDBC驱动程序和Java应用程序的位置:
常用的JDBC组件
JDBC API提供了以下接口和类:
DriverManager:这个类管理数据库驱动程序的列表。确定内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。
Driver:此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用DriverManager中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息。
Connection:此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过此唯一的连接对象。
Statement:可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。
ResultSet:这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,可以通过移动它来检索下一个数据。
SQLException: 这个类用于处理发生在数据库应用程序中的任何错误。
JDBC的执行流程
第一步:注册驱动(告诉Java程序即将连接的是哪个数据库)
第二步:获取连接[建立与数据库的连接](表示jvm的进程和数据库进程之间的通道打开了,属于进程间通讯,是重量级的,使用完之后一定要关闭通道)
第三步:获取数据库操作对象(专门执行sql语句的对象)
第四步:执行sql语句(DQL、DML…),并且返回结果集
第五步:处理查询结果集(只有第四步执行的是select语句的时候才有第五步,如果不是select语句直接到第六步)
第六步:释放资源、关闭连接(使用完资源之后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要关闭
以上过程中出现任何错误都由SQLException负责处理
流程图如下:
总结
以上对JDBC的架构设计和各个组件间的调用流程做了详细说明,后续我会对各个接口进行详细介绍,敬请期待。
人物A 回复
这是回复
人物B 回复
我回复你了
人物A 回复
回复已收到