JDBC 有四种驱动类型,分别是:

  • JDBC-ODBC 桥(JDBC-ODBC bridge driver plus ODBC driver)
  • 本地 API 驱动(Native-API partly Java driver)
  • 网络协议驱动(JDBC-Net pure Java driver)
  • 本地协议驱动(Native-protocol pure Java driver)

1. JDBC-ODBC 桥

从名称之中就可以知道,这种驱动是 JDBC 在 ODBC 已有的功能上做了一层适配工作,即搭桥(Bridge)。

这种驱动完全依赖 ODBC 的实现,JDBC 只是做了一层封装工作。

JDBC-ODBC 桥最主要的功能,是支持 Java 访问 Access 这种伪关系型数据库。

JDBC-ODBC 桥最大的优点在于:ODBC 的代码在天然的在许多使用数据库的客户端上有,所以这种驱动的安装十分便捷。

但是,JDBC-ODBC 桥有以下两个主要的缺点:

  • 由于对 ODBC 的依赖,导致支持的功能有限,性能不佳,扩展能力很弱。
  • 不适合在并发访问数据库的情况下使用。

在 Java8 的实现中,已经删除了 JDBC-ODBC 桥这种驱动方式。

2. 本地 API 驱动

这种驱动方式,相当于 JDBC 完全使用了 ODBC 的工作方式。

在这种驱动中,JDBC调用转换为对 DBMS 的客户端 API 的调用。

JDBC-ODBC 桥的驱动方式,等于是对所有的数据库调用进行了一次整合;而本地 API 驱动则是绕过了 ODBC,对数据库 API 的调用进行了整合。

所以这种驱动方式的效率,相比第一种驱动,会有显著的提高。

然而,与 JDBC-ODBC 桥驱动相同,对客户端数据库的 API 有依赖,所以也不适合基于 Internet 的应用。

3. 网络协议驱动

这种驱动方式,适用于基于 Internet 的应用,它依赖于一个网络服务器上的中间产品:

  • 首先,将 JDBC 调用转化为一个 DBMS 无关的网络协议,传递给中间服务器。
  • 然后,中间服务器负责将这种请求,转化为符合相应的数据库规范的请求,转发给数据库服务器。

这种驱动是基于 Server 端的,所以不需要在客户端加载数据库厂商的代码库。

它在在执行效率,可升级性,灵活性方面都很好。

这种驱动,设计的代码量很小,可以很快地加载到内存当中。

但是,这种驱动在中间件层仍然需要有配置其它数据库驱动程序,而且增加了一个中间层去传递数据,执行效率还不是最好。

同时,基于 Internet 的访问要求,客户端必须处理 Web 所提出的安全性、通过防火墙的访问等方面的额外要求。

4. 本地协议驱动

这种驱动程序将 JDBC 调用直接转换为 DBMS 使用的网络协议。

这种驱动允许从客户端机器直接调用 DBMS 服务器,是内部网(Intranet)访问的优秀解决方案。

由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源。

5. 总结

  • JDBC-ODBC 桥,适合作为开发应用时的一种过度方案,不使用大量的数据库操作。
  • 本地 API 驱动,只适用于内部网,但是执行效率不高,所以一般也不采用。
  • 网络协议驱动,适用于需要同时连接多个不同种类的数据库的应用。
  • 本地协议驱动,适合于连接单一数据库的应用。

从执行效率来讲,第3、4型的驱动是首选,平时通过加载一个 jar 包来达到连接数据库目的的,是第4型驱动。

JDBC 学习笔记(二)—— 详解 JDBC 的四种驱动类型的更多相关文章

  1. JDBC学习1:详解JDBC使用

    什么是JDBC JDBC(Java Database Connectivity),即Java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供同一访问,它由一组用Java ...

  2. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  3. JDBC 学习笔记(十一)—— JDBC 的事务支持

    1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...

  4. JavaScript学习笔记-实例详解-类(二)

    实例详解-类(二)   //===给Object.prototype添加只读\不可枚举\不可配置的属性objectId(function(){ Object.defineProperty(Object ...

  5. Angular6 学习笔记——组件详解之组件通讯

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  6. Angular6 学习笔记——组件详解之模板语法

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  7. Angular6 学习笔记——路由详解

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  8. JavaScript学习笔记-实例详解-类(一)

    实例详解-类(一): //每个javascript函数(除了bind())都自动拥有一个prototype对象// 在未添加属性或重写prototype对象之前,它只包含唯一一个不可枚举属性const ...

  9. Android学习笔记-Dialog详解

    1.对话框的使用 1.1AlertDialog的显示 简单对话框以及监听的设置:重点掌握三个按钮(也就是三上单词): PositiveButton(确认按钮);NeutralButton(忽略按钮) ...

随机推荐

  1. mysql-新增、更新、删除语句

    1.插入数据: INSERT INTO t_book VALUES(NULL,'我爱我家',20,'张三',1); INSERT INTO t_book(id,bookName,price,autho ...

  2. python解析xml实例

    如下,一个银行卡打标签后导出的数据 <?xml version="1.0" encoding="ISO-8859-1"?> <annotati ...

  3. 2018.4.11 Java为何用xml做配置文件? 理由如下

    在Java世界里xml配置文件几乎是首选,xml有什么好的特性呢? 第一:xml能存储小量数据,仅仅是存储数据. 第二:xml可以跨平台,主流各种平台都对xml有支持, 真正的跨平台, 第三:xml读 ...

  4. JavaScript 获取对象中第一个属性

    使用 Object.keys(object) 可以取出属性名为数组,但会打乱顺序 严格意义上对象中是只有映射关系而没有顺序的,但是在存储结构里是有顺序的,如果想获取存储结构里的第一个属性可以使用for ...

  5. selenium--iframe

    前戏 很多人在用selenium定位页面元素的时候会遇到定位不到的问题,明明元素就在那儿,用firebug也可以看到,就是定位不到,这种情况很有可能是frame在搞鬼. 进入到iframe <h ...

  6. Ubuntu编译Android源码过程中的空间不足解决方法

    Android源码一般几十G,就拿Android5.0来说,下载下来大概也有44G左右,和编译产生的文件以及Ubuntu系统占用的空间加起来,源码双倍的空间都不够有.编译源码前能分配足够的空间再好不过 ...

  7. axure的基本使用方法(侧边导航栏的制作)

    1.创建一个动态面板control 2.在home中创建动态面板homepage和movepage并且完成布局 3.给home添加移动事件 4.给按钮添加点击事件 5.大功告成

  8. mysql group by的特殊性

    SELECT create_year, userno , sum(sal) FROM user GROUP BY userno 以上语句,在oracle 或sql server肯定是语法错误  因为g ...

  9. HTML5中Web存储

    HTML5 中web存储是一个比cookies更好的一个本地存储方式. 那么什么是HTML5存储呢? 使用HTML5可以在本地存储用户浏览的数据,HTML5技术没有出来之前是使用cookies进行本地 ...

  10. 用户价值模型 CITE :https://www.jianshu.com/p/34199b13ffbc

    RFM用户价值模型的原理和应用  ▌定义 在众多的用户价值分析模型中,RFM模型是被广泛被应用的:RFM模型是衡量客户价值和客户创利能力的重要工具和手段,在RFM模式中,R(Recency)表示客户购 ...