JDBC Driver Types
2016-01-25 11:34
253 查看
JDBC Driver Types
Type1: JDBC-ODBC Bridge Driver
Type2: JDBC-Native API
Type3: JDBC-Net Pure Java
Type4: 100% Pure Java
官方文档中的模型图
如何选择JDBC驱动
相信做过Java开发的人都对JDBC驱动有所了解:它是Java程序访问数据库的中间件。JDBC驱动可以使Java程序打开数据库连接,并发送SQL(DDL,DML)或者数据库命令,执行结果以Java数据类型返回。从实现的角度来讲:它是对Java的JDBC API的实现,由第三方数据库厂商来完成。
1) 一台服务器上安装有Database Server
2) 本机(运行java程序的机器)上安装数据库的客户机
·这个客户机程序用于和远程Database Server 通信
·这个客户机程序上有ODBC驱动。
3) Java程序与客户机上的ODBC驱动通信,会使用到一个JDBC ODBC桥(type 1)
也就是说,Java程序通过JDBC ODBC桥与客户机上的ODBC驱动通信,ODBC与远程数据库通信,以此来完成Java与数据库的通信。
在Java刚诞生的那个年代,这种方式是很有用的,因为当时的数据库都是只支持ODBC访问。但现在呢,这种访问方式已经很少看到了。如果你想要练习这种方式的话,还是可以的。
譬如说SQLServer、Access、DB2 ,肯定还是支持这种方式的。
这种方式下,JDBC API 使用了JNI方式,也就是Java调用转为C/C++调用,以此来访问数据库。也就是说整个通信过程是这样的:
·Java代码调用JDBC API
·JDBC API转为JNI调用,即Type2 类型的驱动调用。
·Type2类型的驱动访问数据库。
这种方式,也是需要安装客户机的,因为这个驱动(Type2-Native API 实现)是在客户机里才有的。
Type2相比与Type1,少了ODBC,所以这种方式的开销会更少一些。
例如,在使用PLSQL Developer时,会使用到OCI(Oracle Call Interface)。
中间服务器上安装了JDBC Type1,2,4类型的驱动与远程数据库直接交互,java程序使用Type3驱动基于网络来调用JDBC Type1,2,4,以此来完成Java程序与数据库的通信。
这种方式,应该是目前最为常用的了。直接通过JDBC驱动与数据库进行交互。还需要安装客户机什么的。
官方文档中的通信模型图
如果你的Java程序会同时访问多种数据库,Type 3 是不错的选择。
如果Type3,4都不可用的情况下,Type2 是一种不错的选择。
Type 1 现在已很少用的到了。
Type1: JDBC-ODBC Bridge Driver
Type2: JDBC-Native API
Type3: JDBC-Net Pure Java
Type4: 100% Pure Java
官方文档中的模型图
如何选择JDBC驱动
相信做过Java开发的人都对JDBC驱动有所了解:它是Java程序访问数据库的中间件。JDBC驱动可以使Java程序打开数据库连接,并发送SQL(DDL,DML)或者数据库命令,执行结果以Java数据类型返回。从实现的角度来讲:它是对Java的JDBC API的实现,由第三方数据库厂商来完成。
JDBC Driver Types
由于操作系统、硬件平台的多样性, Sun公司将JDBC实现分为4种类型(Type1 ,2,3,4)。下面就对这四种类型分别进行说明。Type 1:JDBC-ODBC Bridge Driver
对于type1 类型的驱动,通信模型是这样的:1) 一台服务器上安装有Database Server
2) 本机(运行java程序的机器)上安装数据库的客户机
·这个客户机程序用于和远程Database Server 通信
·这个客户机程序上有ODBC驱动。
3) Java程序与客户机上的ODBC驱动通信,会使用到一个JDBC ODBC桥(type 1)
也就是说,Java程序通过JDBC ODBC桥与客户机上的ODBC驱动通信,ODBC与远程数据库通信,以此来完成Java与数据库的通信。
在Java刚诞生的那个年代,这种方式是很有用的,因为当时的数据库都是只支持ODBC访问。但现在呢,这种访问方式已经很少看到了。如果你想要练习这种方式的话,还是可以的。
譬如说SQLServer、Access、DB2 ,肯定还是支持这种方式的。
Type 2:JDBC-Native API
这种方式下,JDBC API 使用了JNI方式,也就是Java调用转为C/C++调用,以此来访问数据库。也就是说整个通信过程是这样的:
·Java代码调用JDBC API
·JDBC API转为JNI调用,即Type2 类型的驱动调用。
·Type2类型的驱动访问数据库。
这种方式,也是需要安装客户机的,因为这个驱动(Type2-Native API 实现)是在客户机里才有的。
Type2相比与Type1,少了ODBC,所以这种方式的开销会更少一些。
例如,在使用PLSQL Developer时,会使用到OCI(Oracle Call Interface)。
Type 3:JDBC-Net pure Java
Type1, 2, 4都是一种两层的通信模式:本机程序(包括Java程序、驱动、客户机)->数据库服务器。然而Type 3则是一种三层的通信模式:中间服务器上安装了JDBC Type1,2,4类型的驱动与远程数据库直接交互,java程序使用Type3驱动基于网络来调用JDBC Type1,2,4,以此来完成Java程序与数据库的通信。
Type 4:100% Pure Java
这种方式,应该是目前最为常用的了。直接通过JDBC驱动与数据库进行交互。还需要安装客户机什么的。
官方文档中的通信模型图
如何选择JDBC驱动呢?
如果你访问一类数据库,例如Oracle, Sybase, IBM,最好是选用type 4.如果你的Java程序会同时访问多种数据库,Type 3 是不错的选择。
如果Type3,4都不可用的情况下,Type2 是一种不错的选择。
Type 1 现在已很少用的到了。
相关文章推荐
- 单片机编程,输出周期为2S和0.5S的方波
- 利用8031单片机,设计跑马灯和流水灯
- 编写LED控制程序,完成LED奇数号灯和偶数号灯的交替显示
- 在AngularJS中如何使用谷歌地图把当前位置显示出来
- 多个字的2进制整数相乘
- 单片机编程-3
- 单片机编程-2
- 单片机编程-1
- 16位二进制数转成BCD码--51单片机
- 平均值问题(51汇编语言)
- 中国首批18个“魅力小城”出炉
- 有八个Led接在P1口。
- mac上用文本写html5的注意点
- StringUtils
- 定时顺序控制程序 -51单片机
- 八进制数转换为二进制数 -80x86汇编语言
- 开关控制的单片机流水灯 汇编
- 单片机蜂鸣程序 汇编
- 获取DataTable的时候同时获取主键
- P1.1, P1.2做输入, P1.3做输出, 控制一个5V继电器