JDBC:
一:JDBC的概述
java操作数据库.jdbc是oracle公司指定的一套规范(一套接口)
驱动:jdbc的实现类.由数据库厂商提供. 我们就可以通过一套规范操作不同的数据库了(多态)
jdbc作用: 连接数据库 发送sql语句 处理结果
二:JDBC的工作流程
(1) 加载JDBC驱动
(2) 建立并获取数据库连接
(3) 创建 JDBC Statements 对象
(4) 设置SQL语句的传入参数
(5) 执行SQL语句并获得查询结果
(6) 对查询结果进行转换处理并将处理结果返回
(7) 释放相关资源(关闭Connection,关闭Statement,关闭ResultSet)
三:工作流程详解
1.驱动加载
驱动,其实就是实现了java.sql.Driver接口的类。如oracle的驱动类是 oracle.jdbc.driver.OracleDriver.class(此类可以在oracle提供的JDBC jar包中找到),此类实现了java.sql.Driver接口。由于驱动本质上还是一个class,将驱动加载到内存和加载普通的class原理是一样的:使用Class.forName("driverName")。
JDBC中提供了一个DriverManager角色,用来管理这些驱动Driver。事实上,一般我们操作Driver,获取Connection对象都是交给DriverManager统一管理的。DriverManger可以注册和删除加载的驱动程序,可以根据给定的url获取符合url协议的驱动Driver或者是建立Conenction连接,进行数据库交互。
创建 Connection 连接对象,可以使用驱动Driver的 connect(url,props),也可以使用 DriverManager 提供的getConnection()方法,此方法通过url自动匹配对应的驱动Driver实例,然后调用对应的connect方法返回Connection对象实例。
2. Connection
Driver 或者 DriverManager根据连接的url 和参数信息创建Connection实例,可以获取到数据库的一些信息,这些信息包括:其表信息,应该支持的SQL语法,数据库内有什么存储过程,此链接功能的信息等等,用来维持和数据库的数据通信,如果没有销毁或者调用close()对象,此对象和数据库的对象会一直保持连接;
Connection的主要功能有以下几点:
(1)创建可以执行sql语句或者存储过程的对象statement,用来和数据库进行交互;
(2) 控制sql语句的事务;
Connection默认情况下,对于创建的statement执行的sql语句都是自动提交的,即在statement语句执行完后,自动执行commit操作,将结果影响到物理数据库。为了满足更好地事务控制需求,我们也可以手动地控制事务,手动地对statement 的sql语句执行进行提交(commit)或者回滚(rollback)。可以在Hibernate出调用数据库显示语句验证,不提交事务,查询,发现每数据库语句,但是可以查到数据。
(3)获取数据库连接的元数据,即数据库的整体综合信息;
3.Statement
Statement 的功能在于根据传入的sql语句,将传入sql经过整理组合成数据库能够识别的sql语句(对于静态的sql语句,不需要整理组合;而对于预编译sql语句和批量语句,则需要整理),然后传递sql请求,之后会得到返回的结果。对于查询sql,结果会以ResultSet的形式返回。
SQL语句可以分为增删改查(CRUD,Create,Read,Update,Delete)四种形式,JDBC 从对数据更新与否的角度上看,将上面的四种形式分为两类:查询类别和更新类别。即:查询类别:select 语句 ;更新类别:Insert 、update、delete语句。
4. ResultSet
当Statement查询sql执行后,会得到ResultSet对象,ResultSet对象是sql语句查询的结果,作为数据库结果的映射
四 层次结构
总体而言,JDBC包含以下几大角色 : Driver、DriverManager、Connection、Statement、ResultSet。这几大角色之间的层次关系如下图所示:
参考博文:https://blog.csdn.net/luanlouis/article/details/30060755