JDBC驱动程序

JDBC驱动程序是JDBC API中实现定义的接口。
JDBC是java语言中的与数据库连接的接口。
也就是说JDBC是Java API,使得Java可以与数据库进行连接,而JDBC驱动程序是JDBC API,驱动JDBC进一步与数据库进行交互。

例如:使用JDBC驱动程序,可以发送SQL或者数据库命令,然后就可以打开数据库连接并与数据库进行交互。

JDBC驱动的类型

Sun公司讲实现类型分为四种,1,2,3,和4类型。

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

【知识点】ODBC

什么是ODBC?

它是Open Database Connection,中文解释为开放数据连接。百度百科上面说它为解决异构数据库间的数据共享而产生的,这很难理解。
首先我们现在有很多中数据库系统,如Oracle的Mysql,Sql Server等等,同时不同模型的数据库还有一大堆,抛去关系型数据库还有层次型、网络型、面向对象型...还有他们运行的操作系统也有不同,有的运行在linux上,有的呢又运行在windows上,当然也不一定安装在计算机中,可以安装在各种设备中,如:大型机、小型机、嵌入式系统中。那么这些不同的数据库系统的集合就可以称为异构数据库!!那么有没有互联的需求吗?答案是一定的,他们需要共享数据!

当今世界,人们对数据的需求越来越广泛。一个部门里我们可以统一标准,必须在PC上使用Mysql!但是不同部门与不同部门之间同样需要数据共享。所以数据库互联成为了一个很头疼的问题。

ODBC就是为了解决这一问题的。在操作系统中安装ODBC,应用程序可以用ODBC驱动来完成所有的数据库操作。没错,所有的!

大概了解这么多也就足够了。

回到类型一的驱动程序,JDBC桥接器用于访问安装在每台客户机上的ODBC驱动程序。然后通过ODBC可以进行数据库的交互。


但现在不推荐使用这种类型的驱动程序。

JDK1.2附带的JDBC-ODBC桥接就是这种驱动程序。

类型2:JDBC本地API

在此类型中,JDBC API调用将转换为本地C/C++ API调用。这些驱动程序通常由数据库提供商提供。必须在每个客户机上安装供应商特定的驱动程序。


这个和类型1使用方式是相同的,但是他需要特定于数据库,但是有点也显而易见,它能够自行扩展,消除了ODBC开销(看图,不再需要ODBC提供服务了)。

Oracle调用接口(OCI)驱动程序就是此类型的示例。

类型3:JDBC-Net纯Java

这一类型使用三层方法访问数据库。JDBC客户端使用标准网络套接字与中间件应用程序服务器进行通信。套接字信息随后由中间件应用服务器转换为DBMS所需的调用格式,并转发到数据库服务器。

由此可见此驱动很令或,不需要在哭胡段上面安装代码,一个驱动程序实际上可以提供多个数据库的访问。

可以将在应用程序服务器视为JDBC“代理”,他会调用客户端应用程序。

应用程序服务器会使用类型1,2或4与数据库通信。

类型4 :100%纯java

基于纯Java的驱动程序同样通过套接字连接与供应商的数据库直接通信。但是不同的是,这通常由供应商自己提供。

优点是同样灵活。还有这些驱动由于是数据库供应商提供的,所以还可以动态的下载。

MysqlConnector/J驱动程序是类型4驱动程序。

该使用哪个类型的驱动程序?

如果您正在访问一种类型的数据库,例如Oracle,Sybase或IBM DB2,则首选驱动程序类型为类型4。

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

类型2驱动程序在数据库不可用的类型3或类型4驱动程序的情况下使用。

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

参考资料

易百教程
百度百科

【Java学习】JDBC可以再深一点理解相关推荐

  1. 自用 Java 学习(JDBC)

    JDBC 今日目标 掌握JDBC的的CRUD 理解JDBC中各个对象的作用 掌握Druid的使用 1,JDBC概述 在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据.这就 ...

  2. spring更新后 外层事务查不到_再深一点:面试工作两不误,源码级理解Spring事务...

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. Spring有5种隔离级别,7种传播行为.这是面试常问的内容,也是代码中经常碰到的知识点.这些知识枯燥而且乏味,其中有些非 ...

  3. spring的事务隔离_再深一点:面试工作两不误,源码级理解Spring事务

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. Spring有5种隔离级别,7种传播行为.这是面试常问的内容,也是代码中经常碰到的知识点.这些知识枯燥而且乏味,其中有些非 ...

  4. 再深一点:面试工作两不误,源码级理解Spring事务

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. Spring有5种隔离级别,7种传播行为.这是面试常问的内容,也是代码中经常碰到的知识点.这些知识枯燥而且乏味,其中有些非 ...

  5. java 重载 不可_深入深刻深到不能再深的理解java中的重载和重写

    面向对象的三个特性 面向对象有三个重要的特性:多态,继承,封装. 多态的表现 多态的在java中的应用体现在方法的重载和重写. 重载:字面上的意义一个类里面,有同名但是参数必须不相同的方法.(这里的& ...

  6. Java学习——JDBC之从导Jar包到封装

    书籍就像一盏神灯,它照亮人们最遥远.最黯淡的生活道路.--乌皮特 前言:下面内容是本人Java初学者的学习内容 前提准备:已经安装好mysql数据库,若没有请看Mysql8.0的下载安装 需要学习SQ ...

  7. Java学习笔记10(零压力理解继承多态权限修饰符)

    文章目录 继承 方法的重写(override) 四种访问权限修饰符: 关键字super 类对象的实例化的底层原理 多态 instanceof操作符 object类 继承 继承是Java最重要的,类之间 ...

  8. Java学习——JDBC练习(商城系统)

    数据库准备 --Source Server : MySQL --Source Host : localhost:3306 --Source Schema : myshop drop table goo ...

  9. 超硬核Java学习路线图+学习资源+实战项目汇总,看完以后不用再问我怎么学Java了!

    之前写过很多次关于Java学习指南.Java技术路线图的文章.但是总还是有小伙伴来问我,Java怎么学,项目怎么做,资源怎么找,真是让人头秃. 于是这次黄小斜决定来一波狠的,把所有这些内容都整理起来, ...

最新文章

  1. hql中获取前一天的数据_oracle实现动态查询前一天早八点到当天早八点的数据功能示例...
  2. python更新pip失败-新手求助, python 升级 pip 失败
  3. Django使用缓存笔记
  4. 【C 语言】数组 ( 多维数组操作模型 | 取某个数组元素地址 | 取某个数组元素值 )
  5. 数组最大最小值比较次数优化
  6. 解决vc2008 utf8中文字符串报错 C2001常量中有换行符
  7. html canvas直线进度条,js+HTML5 canvas 实现简单的加载条(进度条)功能示例
  8. IIR数字滤波器的设计及应用——MATLAB
  9. mysql client version_下载mysqlclient问题报错
  10. 数据分析:Hive、Pig和Impala
  11. 优先队列的优先级设置法
  12. Glide4.7.1 圆角与centerCrop冲突问题
  13. VOC2007数据集详细分析
  14. 奔图打印机linux驱动rpm,奔图P2500打印机驱动
  15. 德普图拉在北京香山AI分论坛的主持词
  16. GitHub上十大热门Python项目
  17. 学信网忘记原手机号码的解决办法
  18. 栈和队列的区别与栈和堆的区别
  19. 数据分析 | 岭回归与LASSO回归
  20. 如何选择适合你的兴趣爱好(三十三),国画

热门文章

  1. java中js九个隐含对象_第九章 JSP标签——《跟我学Shiro》
  2. java http 上传文件_java利用httpClient实现后台文件上传请求
  3. 小米用户画像_企鹅智库:高学历用苹果中老年用华为 男性用小米女性用OV
  4. Ubuntu通过可视化界面配置 查找IP地址不存在的解决办法
  5. 数学建模1 赛前准备 赛题选择 查找文献
  6. SpringBoot 启动报错:Failed to configure a DataSource: ‘url‘ attribute is not specified and no emb
  7. 电子路考容易犯错的五大细节
  8. 如何使用搜索技巧来成为一名高效的程序员
  9. maven 中 pom.xml 配置文件标签说明,dependencyManagement和dependencies区别
  10. ELK 构建 MySQL 慢日志收集平台详解