定义及作用:
JDBC,中文名称:Java数据库连接,是Java Database Connecttivity的简写,是Java语言中用来规范客户端程序如何访问数据库的应用程序接口。
简单来说,JDBC就是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一的访问,由一组用Java语言编写的类和接口组成。
分类:
这里说的分类是指JDBC驱动程序的分类,先来介绍什么是JDBC驱动程序。
我们已经知道,Java应用程序可以通过操作JDBC API来操纵底层数据库,但是,对于不同的数据库,实现相同功能所需要的语句是不一定相同的,因此,如何通过一个接口来实现不同数据库的相同功能呢?这就需要数据库厂商所提供的驱动程序了。不同的数据库提供了不同的JDBC Driver去实现JDBC API,而这些不同数据库之间的实现则由一个叫JDBC Driver Manager的类进行管理,所以我们就可以通过JDBC API去操作不同类型的数据库了,如MYSQL, ORACLE, SQL SERVER等
JDBC驱动程序主要分为四类:
1. JDBC-ODBC桥
这种方式是JDBC将访问语句交给ODBC,然后由ODBC调用本地数据库驱动代码.( 本地数据库驱动代码是指 由数据库厂商提供的数据库操作二进制代码库,例如在oracle for windows中就是oci dll 文 件)。这是由于微软推出ODBC的时间比较早,当时大部分的数据库都是通过ODBC进行访问,而Sun公司推出JDBC时为了兼容大多数的数据库,因此就有一种JDBC-ODBC桥的模式,但是,由于这种模式多了一个步骤,因此效率也比较低,在JDK1.8中已经被废弃了。
2. 本地API驱动
本地API驱动直接把JDBC调用转变为数据库的标准调用再去访问数据库.但是仍然需要加载本地数据库驱动代码,因此,不支持Internet程序。
3. 网络协议驱动
JDBC先把对数局库的访问请求传递给网络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器.配置基本上是在服务器上完成。
4. 本地协议驱动
这种驱动直接把JDBC调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可 以直接和数据库服务器通讯.这种类型的驱动完全由java实现,因此实现了平台独立性
JDBC中的Statement
JDBC为编程者提供了三种Statement:
- Statemen
用于执行不带参数的SQL语句 - PreparedStatement
用于执行带IN或不带IN参数的简单SQL语句
它继承了Statement,区别于Statement的地方在于它是进行预编译的,所以执行速度比较快 - CallableStatement
它继承了PrepareStatement
用于执行数据库存储过程的调用
Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。
JDBC采用的设计模式
JDBC采用了桥接模式,简单来说就是JDBC提供了两套接口,一套面向数据库厂商,由他们针对每个数据库进行具体实现;另一套面向程序员,只负责调用就可以了。
定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化。
意图 :将抽象与实现解耦。
桥接模式所涉及的角色
- Abstraction :定义抽象接口,拥有一个Implementor类型的对象引用
- RefinedAbstraction :扩展Abstraction中的接口定义
- Implementor :是具体实现的接口,Implementor和RefinedAbstraction接口并不一定完全一致,实际上这两个接口可以完全不一样Implementor提供具体操作方法,而Abstraction提供更高层次的调用
- ConcreteImplementor :实现Implementor接口,给出具体实现
Jdk中的桥接模式:JDBC
JDBC连接 数据库 的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不动,原因就是JDBC提供了统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了