Java大牛养成记(2)——JDBC

来源:互联网 发布:灰色关联分析法 编程 编辑:程序博客网 时间:2024/04/29 18:58


背景:一边学习Java,一边做项目的日子真的很充实,忙完这边忙那边,充实的同时总能学习到知识。无论是新的还是旧的,还是经验的积累,总是能给你意外的惊喜。上篇博客中介绍了J2EE的13个规范,其中第一个就是JDBC,看到这个英文缩写,首先在脑海里搜索一番,记得一年多前敲学生信息管理系统的时候也用到了一个访问数据库的工具——ODBC,这两个很相似,一个字母的区别,下面简单的介绍一下JDBC,看看它和之前学习的ODBC有何联系和区别。


一、JDBC


1、概念

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

   

2、特点

◆以统一方式访问数据库的API

◆独立于平台的数据库访问

◆位置透明

◆对专有数据库的问题是透明的


3、JDBC和JDBC Drivers

◆JDBC Drivers是实现数据库操作的类

◆Drivers的分类:2-层——客户直接和数据库会话。

                3-层——客户与代表数据库的中间层(WebLogic Server)会话。


4、JDBC体系结构



5、连接池(Connection Pools)

◆消除频繁建立连接所需的负载

◆用于管理数据库连接的管理对象

◆提供可共享,安全的连接



6、数据源(Data Sources)

◆从连接池中提供连接的被管理的工厂对象

◆绑定到JNDI并使用管理控制台配置


二、ODBC


1、概念

    ODBC(Open Database Connectivity,开放数据库连接)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。


2、驱动管理器
    驱动管理器本身是MS Windows中一个动态连接链接库文件(ODBC.DLL)。应用程序透过驱动管理器去加载并连接数据源的驱动程序(driver)并连接数据源。驱动管理器主要工作如下:
Uses ODBC INI file to map a data source name to a specific driver DLL.
Processes server ODBC initialization calls.
Provides entry points to ODBC functions for each driver.
Provides parameter validation and sequence validation for ODBC calls.


3、驱动程序
    驱动程序也是一个动态连接链接库文件,当应用程序呼叫ODBC函数,SQLConnect 或SQLDriverConnect时,驱动管理器就会加载相对的驱动程序与应用程序呼应。驱动程序主要是执行ODBC之相对函数,并与对应的数据源(Data Source)做沟通。驱动程序之工作如下:
Establishes a connect to a data source.
Submits requests to a data sources.
Translates data to or from other formats,if requested by the application.
Return results to the application.
Formats errors into standard error codes and returns them to the application.
Declares and manipulates cursors if necessary (invisible to the application).
Initiates transactions if the data source requires explicit transaction initiation(invisible to the app).


4、数据源
    数据源唯一数据库系统(DBMS)或是数据库操作系统的一个组合。举例来说,应用库系统可以同时与下列两个或其中一个数据源连接。
A DBMaker DBMS running on a Microsoft Windows NT accessed by NTaccessed by TCP/IP.
A Tandem NonStop SQL DBMS running on the Guardian 90 accessed via a gateway.


5、体系结构



三、JDBC VS ODBC


    目前,Microsoft 的 ODBC API 可能是使用最广的、用于访问关系数据库的编程接口。它能在几乎所有平台上连接几乎所有的数据库。

为什么 Java 不使用 ODBC?

    对这个问题的回答是:Java 可以使用 ODBC,但最好是在 JDBC 的帮助下以JDBC-ODBC桥的形式使用。

为什么需要 JDBC?

     答案是显然的:ODBC 不适合直接在 Java 中使用,因为它使用 C 语言接口。从Java 调用本地 C代码在安全性、实现、坚固性和程序的自动移植性方面都有许多缺点。从 ODBC C API 到 Java API 的字面翻译是不可取的。例如,Java 没有指针,而 ODBC 却对指针用得很广泛(包括很容易出错的指针"void *")。您可以将 JDBC 想象成被转换为面向对象接口的 ODBC,而面向对象的接口对 Java程序员来说较易于接受。

     ODBC 很难学。它把简单和高级功能混在一起,而且即使对于简单的查询,其选项也极为复杂。相反,JDBC 尽量保证简单功能的简便性,而同时在必要时允许使用高级功能。启用"纯 Java "机制需要象 JDBC 这样的 Java API。如果使用ODBC,就必须手动地将 ODBC 驱动程序管理器和驱动程序安装在每台客户机上。如果完全用 Java 编写 JDBC 驱动程序则 JDBC代码在所有 Java 平台上(从网络计算机到大型机)都可以自动安装、移植并保证安全性。
    总之,JDBC API 对于基本的 SQL 抽象和概念是一种自然的 Java 接口。它建立在 ODBC 上而不是从零开始。因此,熟悉 ODBC 的程序员将发现 JDBC 很容易使用。JDBC 保留了 ODBC 的基本设计特征;事实上,两种接口都基于 X/Open SQL CLI(调用级接口)。它们之间最大的区别在于:JDBC 以 Java 风格与优点为基础并进行优化,因此更加易于使用。
    目前,Microsoft 又引进了 ODBC 之外的新 API: RDO、 ADO 和OLE DB。这些设计在许多方面与 JDBC 是相同的,即它们都是面向对象的数据库接口且基于可在 ODBC 上实现的类。但在这些接口中,我们未看见有特别的功能使我们要转而选择它们来替代 ODBC,尤其是在 ODBC 驱动程序已建立起较为完善的市场的情况下。它们最多也就是在 ODBC 上加了一种装饰而已。



四、学习心得


1、相似的东西要想学得清楚,必须进行比较,找出两者的相同点和不同点,不然的话容易混淆。

2、新东西要在旧东西的基础上进行扩展和补充,这样就没有新旧之分。

3、编结自己的知识网,这样系统的学习就会让自己的思维更加灵活,学习到的东西也不容易遗忘。





3 0