JDBC从入门到放弃

JDBC:

一:JDBC的概述

java操作数据库.jdbc是oracle公司指定的一套规范(一套接口)

驱动:jdbc的实现类.由数据库厂商提供. 我们就可以通过一套规范操作不同的数据库了(多态)

jdbc作用: 连接数据库 发送sql语句 处理结果

 

二:JDBC的工作流程

1.加载特定数据库驱动器实现类,并注册驱动器(Driver会注册到DriverManager中);
2. 根据特定的URL,返回可以接受此URL的数据库驱动对象Driver;
3.使用数据库驱动 Driver 创建数据库连接Connection会话;
4. 使用 Connection对象创建 用于操作sql的Statement对象;
5.  statement对象 .执行 sql语句,返回结果ResultSet 对象;
6. 处理ResultSet中的结果;
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

                  http://chenjc-it.iteye.com/blog/1455688

阅读更多

没有更多推荐了,返回首页