一,什么是JDBC
JDBC,即java database connectivity,是一套用于访问数据库但不依赖于数据库类型的JAVA API。
JDBC库包含了数据库的常用使用方法的API实现,基本如下:
- 数据库连接
- 创建SQL语句
- 执行SQL语句
- 浏览及修改返回的结果集
从根本上来说,JDBC是一份标准,完整的定义了一批轻量级访问下层数据库的接口。JAVA可用于创建各种类型的可执行的对象,比如:
- JAVA APPLICATION
- JAVA APPLETS
- JAVA SERVLETS
- JAVA SERVERPAGES(JSP)
- ENTERPRISE JAVABEANS(EJB)
以上所有的可执行对象都可以使用JDBC驱动去访问数据库,并且提供了与ODBC类似的功能,允许JAVA程序包含不依赖于数据库的代码。
二,JDBC的架构
JDBC的API提供了双重和三重的数据库访问处理模型,但通常JDBC的架构只包含两层:
- JDBC API(提供了应用程序到JDBC管理器的连接)
- JDBC Driver API(提供了JDBC管理器与数据库驱动之间的连接)
通过驱动管理器(JDBC内置)及数据库驱动(数据库内置),JDBC为我们提供了应用程序与各类数据库之间的透明连接。驱动管理器确保了访问数据源时采用正确的驱动文件,支持当前各种数据库的驱动。
下图展示了驱动管理器,数据库驱动文件在项目架构中的位置:
JDBC包含的组件通常如下:
- DriverManager:这个类维护着一张数据库驱动列表,如上图所示,当JAVA应用提供发来一份数据库连接请求时,驱动管理器会依据JAVA应用程序提供的数据驱动及JDBC子协议,给回返合适的数据库连接类型,也就是说,在驱动管理器的驱动列表中,首先识别应用程序提供的JDBC子协议的驱动,会被 用于创建一个数据库连接。
- Driver:这个接口定义了应用程序与数据库服务器之间的通信。通常情况下,我们很少会直接使用驱动对象去做具体的交互,而是使用驱动管理器对象(管理着驱动)。驱动管理器将驱动工作的细节都抽象化了。
- Connection:这个接口声明了与数据库打交道的所有方法。一个连接对象即代表着一个连接上下文,所有与数据库之间的交互只能通过连接对象来完成。
- Statement:应用程序使用该接口的实现类的实例将SQL语句提交到数据库中,所有一些派生的接口会接收参数以便去执行数据库中的存储过程
- ResultSet:这个类的实例维护着SQL语句执行完之后的返回结果,它为我们提供了迭代的方式去访问结果集
- SQLExceition:这个类用于处理及记录在数据库操作过程中发生的所有错误。
/*************************************外星人乔丹拍板时间****************************************************/
如上图所示,JDBC类似于一个驱动工厂,可依据我们指定的数据库类型为我们提供合适的数据库连接,再通过它内置的各种组件方便我们进行数据库的相关操作