【Java学习】JDBC可以再深一点理解

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可以进行数据库的交互。

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

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

类型2:JDBC本地API

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

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

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

类型3:JDBC-Net纯Java

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

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

clipboard.png

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

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

类型4 :100%纯java

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

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

clipboard.png

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

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

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

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

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

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

参考资料

易百教程
百度百科

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

想成为优秀的技术人员你必须做到的几件事情

找工作的这几天,收获颇多。思考得最多的问题可能就是对未来的一个规划。无意中看到下面几条经验,发现和自己想的也差不多,就分享出来。我要求自己做到这些,同时也希望对您也有所帮助。 1、保持学习 一个非常重要的观点是&#x…

第 五 课 golang语言变量

1 变量三种声明: (第一种的var和类型都是多余; 第二种最简洁,但是第二种只能用在函数中,不能是全局变量的声明) 第一种: var v_name v_type(注意顺序)v_name value pack…

wordpress 评论ajax,WordPress教程 WordPress实现提交评论ajax翻页效果教程

WordPress提交评论ajax翻页的效果会很大的提高用户体验度,虽然我们一般的个人WordPress博客评论也不会有很多,但是用户体验至上嘛,所以WordPress主题站小编为大家分享WordPress实现提交评论ajax翻页效果教程,希望能给大家能用得上…

Lombok的使用方法

文章目录0.Lombok简介1.在项目中添加Lombok的依赖2.在IDEA开发工具中添加Lombok插件0.Lombok简介 Lombok是一个实用的java工具,使用它可以消除java代码的臃肿,Lombok提供一系列的注解,使用这些注解可 以不用定义getter/setter、equals、构造…

【Python3网络爬虫开发实战】4-解析库的使用-3 使用pyquery

在上一节中,我们介绍了Beautiful Soup的用法,它是一个非常强大的网页解析库,你是否觉得它的一些方法用起来有点不适应?有没有觉得它的CSS选择器的功能没有那么强大?如果你对Web有所涉及,如果你比较喜欢用CS…

世上最伟大的十个公式,质能方程排名第五

英国科学期刊《物理世界》曾让读者投票评选了“最伟大的公式”,最终榜上有名的十个公式既有无人不知的112,又有著名的Emc2;既有简单的-圆周公式,又有复杂的欧拉公式…… 从什么时候起我们开始厌恶数学?这些东西原本…

爬虫二(urllib模块)

1、在python2和python3中的差异 在python2中,urllib和urllib2各有各自的功能,虽然urllib2是urllib的升级版,但是urllib2还是不能完全替代urllib,但是在python3中,全部封装成一个类,即urllib python2中urlli…

逆向工程

软件的逆向工程是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程,也就是说,逆向工程是一个恢复设计结果的过程,逆向工程工具从现存的程序代码中抽取有关数据、体系结构和处理过程的设计信息。 简单的说根据已有的东西和…

protocol buffer使用小例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 、使用EditPlus定义好一份proto文件(用EditPlus是为了不出现乱码),如下 : package mypac…

2000服务器文件共享,Win2000 Server实现对共享文件的监控

病毒的出现,使我们在共享文件时变得异常小心。那么,有没有办法监控共享文件的使用情况并加以管理呢?有,用Windows 2000 Server的文件共享监控功能就可以实现。Windows 2000 Server的共享管理功能在“计算机管理”中,它…

学成在线--1.CMS接口开发

文章目录0.定义CMS1.CMS页面管理2.需求分析3.模型类介绍4.定义请求及响应类型5.定义接口6.创建CMS工程结构7.Dao1)创建Dao,继承MongoRepository2)编写测试类分页查询测试添加删除修改8.Service9.Controller10.接口开发规范0.定义CMS 1&#…

django 进阶

django进阶 django的分页器 基础语法: View Code简单练习: View Code实例应用: View Code自定义分页: View Codeform表单系统 原生form View CodeDjango表单系统中,所有的表单类都作为django.forms.Form的子类创建&…

BZOJ 2440: [中山市选2011]完全平方数

Time Limit: 10 Sec Memory Limit: 128 MB Submit: 5160 Solved: 2515 [Submit][Status][Discuss] Description 小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些 数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的…

如何减小与“大牛”的差距

为什么同样的时间有的人可以漂亮的完成工作,而有些人废了很大的力气也没有完成? 前者我们常常称之为“大牛”,后者我们常常叫他们“菜鸟”。当然“大牛”都是相对而言的,“大牛”也不可能方方面面都非常厉害,换句话说大…

软件再工程

软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。最大限度地重用既存系统的各种资源是再工程的最重要特点之一。从软件重用方法学来说,如何开发可重用软件和如何构造采用可重用软件的系统体系结构是两个最关键问题。不过对再工…

武侠乂怎么修改服务器,武侠乂怎么操作 按键功能详细介绍

武侠乂将在7月27日开启限量测试了,入手前的第一件事情当然要熟悉操作按键了,下面给大家带来的是武侠乂按键介绍,一起来看看吧。武侠乂将在7月27日开启限量测试了,玩家们马上就能体会到武侠吃鸡的快感,除了吃鸡模式外还…

RMI使用小例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1、定义一个接口(继承Remote): 方法要抛RemoteException。 package rmi; import java.rmi.RemoteEx…

产品经理和项目经理有哪些区别?

1.产品经理和项目经理的差异 首先,产品经理和项目经理的职责定义不太一样。 产品经理是 Product Manager ,主要是负责市场调研、用户研究并根据用户的需求,定义和设计产品,然后考虑产品的商业模式、运营推广方式等。接下来去推动…

09-完整性约束

本节重点: not null 与 defaultuniqueprimaryauto_incrementforeign key一、介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) #标识该字段为该表的主键&#x…

fread rb与r,wb,w的区别

在fread时,"rb"与"r"对某些字符作用,是不同的; 文本模式和二进制模式读取不一样的 文本:读: 遇到回车-换行(0D 0A),就会转换为换行符0A 写:遇到换行符0A,就会转换为回车-换…