一下内容引用自http://wiki.jikexueyuan.com/project/jdbc/drive-types.html

一、什么是JDBC驱动程序?

JDBC驱动实现了JDBC API中定义的接口,该接口用于与数据库服务器进行交互。

例如,使用JDBC驱动程序可以打开数据库连接,并通过发送SQL或数据库命令,然后通过Java接收结果。

java.sql包中附带的JDK,包含了定义各种类与他们的行为和实际实现,这些类都在第三方驱动程序中完成。第三方供应商在他们的数据库驱动程序中都实现了java.sql.Driver接口。

二、JDBC驱动程序类型

JDBC驱动程序的实现,因为各种各样的操作系统和Java运行在硬件平台的不同而不同。Sun公司将实现类型分为四类:类型1,2,3,4,其解释如下:

1、类型1:JDBC-ODBC桥驱动程序:

在类型1驱动程序中,一个JDBC桥接器是用来访问安装在每个客户机上的ODBC驱动程序。为了使用ODBC,需要在目标数据库上配置系统数据源名称(DSN)。

当Java刚出来时,这是一个很有用的驱动程序,因为大多数的数据库只支持ODBC访问,但现在此类型的驱动程序仅适用于实验用途或在没有其他选择的情况。

自带JDK 1.2中的JDBC-ODBC桥是这类驱动程序的一个很好的例子。

2、类型2:JDBC-Native API

在类型2驱动程序中,JDBC API调用转换成原生的C/C++ API调用,这对于数据库来说具有唯一性。这些驱动程序通常由数据库供应商提供,并和JDBC-ODBC桥驱动程序同样的方式使用。该供应商的驱动程序必须安装在每台客户机上。

如果改变了当前数据库,必须改变原生API ,因为它是具体到某一个数据库,并且他们大多已经失效了。即使这样用类型2驱动程序也能提高一些速度,因为他消除了ODBC的开销。

Oracle调用接口(OCI)驱动程序是一个类型2驱动程序的示例。

3、类型3:JDBC-Net纯Java

在类型3驱动程序中,一般用三层方法来访问数据库。JDBC客户端使用标准的网络套接字与中间件应用服务器进行通信。套接字的相关信息被中间件应用服务器转换为数据库管理系统所要求的的调用格式,并转发到数据库服务器。

这种驱动程序是非常灵活的,因为它不需要在客户端上安装代码,而且单个驱动程序能提供访问多个数据库。

可以将应用服务器作为一个JDBC“代理”,这意味着它会调用客户端应用程序。因此,需要一些有关服务器配置方面的知识,这样可以高效地使用此驱动程序类型。

应用服务器可能使用类型1,2,或4驱动程序与数据库进行通信,了解它们的细微之处将会很有帮助。

4、类型4:100%纯Java

在类型4驱动程序中,一个纯粹的基于Java的驱动程序通过socket连接与供应商的数据库进行通信。这是可用于数据库的最高性能的驱动程序,并且通常由供应商自身提供。

这种驱动器是非常灵活的,不需要在客户端或服务端上安装特殊的软件。此外,这些驱动程序是可以动态下载的。

MySQL Connector/J的驱动程序是一个类型4驱动程序。因为它们的网络协议的专有属性,数据库供应商通常提供类型4的驱动程序。

三、该使用哪种驱动程序?

如果正在访问一个数据库,如Oracle,Sybase或IBM,首选的驱动程序是类型4。

如果Java应用程序同时访问多个数据库类型,类型3是首选的驱动程序。

类型2驱动程序是在数据库没有提供类型3或类型4驱动程序时使用的。

类型1驱动程序不被认为是部署级的驱动程序,它存在的目的通常仅用于开发和测试。

JDBC驱动类型的更多相关文章

  1. JDBC驱动的四种类型

    Java中的JDBC驱动可以分为四种类型,包括JDBC-ODBC桥.本地API驱动.网络协议驱动和本地协议驱动. JDBC驱动类型一.JDBC-ODBC桥 JDBC-ODBC 桥 是sun公司提供的, ...

  2. JDBC 学习笔记(二)—— 详解 JDBC 的四种驱动类型

    JDBC 有四种驱动类型,分别是: JDBC-ODBC 桥(JDBC-ODBC bridge driver plus ODBC driver) 本地 API 驱动(Native-API partly ...

  3. JDBC驱动自身问题引发的FullGC

    公众号HelloJava刊出一篇<MySQL Statement cancellation timer 故障排查分享>,作者的某服务的线上机器报 502(502是 nginx 做后端健康检 ...

  4. Java JDBC 驱动 MySQL

    MySQL: 1>下载地址:http://www.mysql.com/products/connector/ 2> //jdbc:[数据库类型]://[ip地址]:[端口号]/[数据库名] ...

  5. JDBC驱动程序类型

    JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互. 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数 ...

  6. Atitit.自定义jdbc驱动  支持jsql

    Atitit.自定义jdbc驱动  支持jsql 1. 为什么需要自定义驱动1 1.1. 透明分库分表1 1.2. 自定义数据库的接口.比如大数据文档文件类型的数据库,数据存储引擎2 2. 整个文章分 ...

  7. [Java] Oracle的JDBC驱动的版本说明

    classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异 作者:赵磊 博客:http://elf8848.iteye.com 来源:http:/ ...

  8. IDEA用Maven连接MySQL的jdbc驱动,并操作数据库

    1.在IDEA里创建Maven项目 1.1.点击Create New Project   1.2.选择Maven,JDK这里用的是1.8,点击Next  1.3.填入“组织名”.“项目名”,版本是默认 ...

  9. IDEA导入MySQL的jdbc驱动,并操作数据库

    将MySQL的jdbc驱动,导入IDEA的方式,虽然也能连接并且操作数据库,但并不推荐这种方式,推荐使用Maven工程的方式:https://www.cnblogs.com/dadian/p/1193 ...

随机推荐

  1. 新奇:(nodejs兄弟)用HTML + FLASH +JS 也可以写桌面EXE。

    首先看下面这张图片,下面的所有界面都是用html代码实现的. 编程IDE:vb6.0 使用控件:WEBBROWSER 原理:使用olelib 让程序继承:IDocHostUIHandler 和 ICu ...

  2. leetcode_1014. Capacity To Ship Packages Within D Days

    https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/ 传送带要在D天内把所有货物传送完,但是传送带每天有传送容量 ...

  3. C++运行外部exe并判断exe返回值

    有三个API函数可以运行可执行文件WinExec.ShellExecute和CreateProcess.CreateProcess因为使用复杂,比较少用. WinExec主要运行EXE文件. ⑴ 函数 ...

  4. error while loading shared libraries: libclntsh.so.11.1

    解决这个问题有两种方法 1.在当前用户下,添加链接库所在路径 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_ ...

  5. cc.Node—坐标系统

    cc.Vec21: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量;2: cc.pSub: 向量相减 ...

  6. 使用ajax解析后台json数据时:Unexpected token o in JSON at position 1

    json数据解析异常 今天在做json数据的时候,出现了如下错误,说是解析异常. VM1584:1 Uncaught SyntaxError: Unexpected token o in JSON a ...

  7. linux中PHP安装扩展包(mongodb为例)

    相对于windows中的PHP扩展,只需要在下载相应的dll资源,并且添加配置在php.ini之后即可. 但是在linux安装扩展时,需要进行编译安装. 这里以lnmp一键安装包为例(php.ini位 ...

  8. jupyter 教程

    官网: http://jupyter.org/

  9. PHP:现有图片验证码类

    文章来源:http://www.cnblogs.com/hello-tl/p/7593022.html <?php class TL_Captcha_img{ private $image; / ...

  10. 02--Activiti初始化表

    初始化数据库 方法一:执行sql脚本文件activiti-5.13\database\create\activiti.mysql.create.*.sql文件 方法二:代码创建(有流程自然就有表) p ...