转自IT专家网 http://database.ctocio.com.cn/69/8849069.shtml
JDBC与ODBC都可以实现类似的功能,但JDBC与ODBC的区别是他们的开发架构不同,其实现细节上也有所差异。
谈到JDBC与ODBC的区别,JDBC和ODBC其实都是用来连接数据库的启动程序。ODBC中文名字叫做开放数据库互联,是微软技术人员开发的开放服务结构中有关数据库的一个组成部分,它建立一组相关的规范,并提供了一组对数据库访问的标准应用程序编程接口。简单的说,ODBC就是应用程序与数据库系统进行交互的工具。一个给予ODBC的应用程序对数据库的操作不依赖于人员的数据库系统,不支持与数据库管理系统打交道,所有的数据库操作由对应的数据库系统的ODBC驱动程序来完成。从而可以实现以统一的方式来处理所有的数据库。
而JDBC与ODBC类似,也是一个应用程序与数据库进行通信的中介。只是他们的开发商不同而已。JDBC是由Sun公司向关系型数据库系统厂商提供JDBC的规格与需求;然后各大厂商遵循标准规格设计出符合自己数据库产品的JDBC驱动程序。虽然JDBC与ODBC都可以实现类似的功能,但是他们的开发架构不同,其实现细节上也有所差异。为此数据库管理员必须要了解这方面的差异,并在工作中根据实际情况来选择合适的数据库驱动程序。
JDBC与ODBC的区别:JDBC的优点。
JDBC应用程序接口是JAVA程序语言内针对数据存取所涉及的程序开发接口,其内部是由许多类与接口构成。而ODBC则是由C语言来开发的。由于两者开发平台的不同,为此开发不同种各自的特点也就传递到了这连个数据库启动程序中。根据笔者的了解,相对ODBC数据库启动程序来说,JDBC有如下几个优点。若笔者概括的不够全面的话,欢迎大家来补全。
1、JDBC要比ODBC容易理解。大家学过编程的也许会有一个直观的感受,就是JAVA语言要比C语言好学的多。因为JAVA语言的设计思路是面向对象的,跟人的认识思维比较接近,为此比较容易被人接受,学习起来也相对轻松一点。而C语言则就比较抽象了,跟人的认识规律有一定的距离。为此他们开发出来的产品也有类似的特点。在ODBC中,虽然可以实现与数据库的交互,但是实现起来比较复杂。如一个简单的查询,也需要分为好几块内容;而在ODBC驱动程序内部再去进行整合,进行一些复杂的操作。这不仅降低了数据库启动程序的性能,而且也给程序开发者开发应用程序带来了一定的负面影响。而JDBC数据库启动程序在设计的时候就包含了大部分基本数据操作功能,为此在编写一些常规的数据库操作语句时,如查询、更新等等,其所需要的代码比ODBC要少的多。故从这方面来说,JDBC数据库启动程序要比ODBC容易理解。
2、JDBC数据库驱动程序是面向对象的,完全遵循JAVA语言的优良特性。通常情况下,只要有JAVA车功能需设计基础的用户都可以在最短时间内了解JDBC驱动程序的架构,比较容易上手,可以轻而易举的开发出强悍的数据库应用程序。而ODBC的话,由于其内部功能复杂,代码编写要求高。为此即使是一个C语言的高手,仍然需要花费不少的时间去了解这个数据库启动程序;在编写代码的时候,还离不开相关的参考书籍。
3、JDBC的移植性要比ODBC要好。通常情况下,安装完ODBC驱动程序之后,还需要经过一定的配置才能够使用。而不同的配置在不同数据库服务器之间不能够通用。也就是说,装一次需要配置一次。但是JDBC数据库驱动程序则不同。如果采用JDBC数据库驱动程序的话,则只需要选择适当的JDBC数据库驱动程序,就不需要进行额外的配置。在安装过程中,JDBC数据库驱动程序会自己完成相关的配置。为此JDBC的移植性要比ODBC要好。
总之JDBC与ODBC都是数据库的启动程序,它们的本质是相同的,都是为了处理SQL语句而设计的。而且JDBC在设计的时候,其也是在ODBC的基础上进行设计的,并保留了ODBC数据库驱动程序的部分功能。或者说,我们可以把JDBC看作是ODBC的另一个高级版本也未尝不可。JDBC主要在操作上、友好性上做了一定的改进。
JDBC与ODBC的区别:什么时候采用JDBC?
虽然说JDBC数据库启动程序比ODBC来说具有不少的优点,但是也并不是说在所有的情况下采用JDBC数据库启动程序都能够起到不错的效果。数据库管理员还需要根据企业的实际应用环境来进行选择。通常情况下,如果符合下面几种情况的任何一种,笔者建议采用JDBC数据库驱动程序。
一是采用Oracle公司的Oracle JDeveloper 10G来开发应用程序。JDeveloper 10G是Oracle公司提供的一个可视化的开发环境。可以帮助数据库管理员与开发人员方便的完成一些复杂的功能。如数据库开发人员可以借这个工具来设计WEB应用程序的网页执行流程;如可以用来开发业务服务层组件;如可以在JSP与JClient应用程序内实现数据绑定功能等等。特别是在利用这个工具开发业务服务层组件的时候,可以直接浏览与存取业务组件所对应的数据。数据库开发人员不用等到应用程序撰写好后才测试数据库的存取功能。显然这个特性让数据库开发人员在开发数据库应用程序的时候格外的便利。而为了配合这个开发工具,Oracle公司专门开发了对应的JDBC驱动程序。为此如果数据库开发人员采用JDeveloper开发工具的话,那么采用JDBC要比采用ODBC的兼容性要好。所以如果采用了这种开发工具的话,最好能够采用JDBC数据库启动程序。
二是如果应用程序采用的是JAVA开发平台的话,那么最好使用JDBC数据库启动程序。其实JDeveloper采用的也是JAVA开发平台。这主要是因为如果JAVA程序直接调用ODBC的C语言应用程序接口时,比较容易产生安全方面的问题。如Java语言是不采用指针的(因为指针的处理效率比较慢),而ODBC所采用的C语言却使用了大量的指针。为此如果使用JAVA语言平台来开发数据库应用程序,若采用ODBC数据库驱动程序的话,就不那么合适了。另外由于JDBC也是JAVA语言开发的,所以其兼容性也会好许多。为此笔者建议,如果数据库开发人员采用的是JAVA语言开发平台的话,那么最好采用JDBC驱动程序,而不是ODBC驱动程序。
在其他的情况下,数据库管理员与开发人员可以根据自己的习惯来选择合适的数据库驱动程序。
JDBC与ODBC的区别:能否从ODBC顺利过渡到JDBC?
也许数据库管理员以前采用的是ODBC驱动程序,而如果数据库管理员现在需要采用JDBC驱动程序,那么能否实现顺利过渡呢?答案是肯定的。在JDBC驱动程序中有一类叫作JDBC-ODBC桥接启动程序。这种类型的JDBC数据库驱动程序其底层是通过ODBC驱动程序来连接数据库的。如果原先的应用程序是基于ODBC数据库驱动程序的,或者数据库没有提供对应的JDBC驱动程序,则数据库管理员可以利用JDBC-ODBC桥接驱动程序来实现。也就是说,桥接驱动程序可以利用现有的ODBC驱动程序来存取关系型数据库。为此者不仅可以保留先前的开发架构(通过ODBC来存取数据),还可以立即使用JAVA作为新的开发环境,从而实现ODBC数据库驱动程序到JDBC的顺利转型。
不过在采用这种桥接驱动程序的时候,需要注意几个问题。一是这个桥接驱动程序仍然需要用到ODBC数据库驱动程序。因为桥接驱动程序直接联系的对象是ODBC驱动程序,然后再通过ODBC驱动程序去访问数据库。为此在客户端必须先安装并配置好ODBC驱动程序。如果采用的是三层式的开发结构,也需要安装ODBC驱动程序。其次,在这种模式下,应用程序先调用JDBC,然后再通过JDBC调用ODBC,最后再跟数据库进行通信。显然其中间多了几个环节。由于其中间环节比较多,但数据访问出现问题的时候,就不怎么好查问题。这就好像一道水管,如果中间的接口多了的话,则发生漏水的几率就比较高。如果真的发生漏水的话,则查询漏水点的时候也会比较困难。为此笔者认为,采用桥接类型的JDBC驱动程序只是权宜之计。在适当的时候,数据库开发人员还是需要调整原先的开发架构,全部都转到JDBC驱动程序上来。桥接程序只是为数据库开发人员争取一定的时间。虽然这个转型过程中的阵痛是比较痛的,但确是不可避免的。长痛不如短痛,笔者建议数据库开发人员还是及早进行过渡为好。并在可能的情况下,把以前的开发架构也进行调整,以采用真正意义上的JDBC驱动程序。