首页 > 编程笔记 > Java笔记 阅读:2

JDBC是什么,Java JDBC技术简介(新手必看)

JSP 页面中可以编写 Java 代码,可以通过 Java 代码来访问数据库。在 Java 技术系列中,访问数据库的技术叫作 JDBC,它提供了一系列的 API,让使用 Java 语言编写的代码连接数据库,对数据库的数据进行添加、删除、修改和查询。

应用程序使用 JDBC 访问数据库的方式,如下图所示:


图 1 应用程序使用 JDBC 访问数据库的方式

不过,这里有一个问题。由于 JSP 不知道具体连接的是哪一种数据库,而由于厂商不一样,各种数据库连接的方式通常也不一样,因此,为了使应用程序与数据库真正建立连接,JDBC 不仅需要提供访问数据库的 API,还需要封装与各种数据库服务器通信的细节。

数据库开发人员使用 JDBC API 编写一个程序后,就可以很方便地将 SQL 语句传送给几乎任何一种数据库,如 Sybase、Oracle 或 Microsoft 的 SQL Server 等。用 JDBC 编写的程序能够自动地将 SQL 语句传送给相应的数据库管理系统。Java 和 JDBC 结合可以让数据库开发人员在开发数据库应用时真正实现“一次编写,到处运行”。

JDBC API 既支持数据库访问的二层模型,也支持三层模型。

1) 二层C/S结构

二层 C/S(Client/Server,客户端/服务器)结构是当前非常流行的数据库系统结构。在这种结构中,客户端提出请求,服务器对客户端的服务请求做出回答。

二层C/S结构把界面和数据处理操作分开在前端(客户端)和后端(服务器),这个主要特点使得系统的工作速度主要取决于进行大量数据操作的服务器,而不是前端的硬件设备;同时大大降低了对网络传输速度的要求,因为只需客户端把服务请求发送给数据库服务器,数据库服务器把服务结果传回客户端。

在设计数据库系统结构时,对数据可能有如下不同的处理方式。
① 在处理时,客户端先向服务器索取数据,然后释放数据库,即客户端发出的是文件请求,在客户端处理数据,最后将结果送回服务器。这种处理方式的缺点很明显:所有的应用处理都在客户端完成,这就要求客户端的计算机必须有足够的能力,以便执行需要的任何程序。

更为糟糕的是,由于所有的处理均在客户端完成,因此每次运行时都要将文件整体传送到客户端,然后才能执行。如Student表中有30 000条记录,客户端发出如下请求命令:
Select * From Student Where Sno='200101'
这条命令要求服务器将 Student 表中的所有记录传送到客户端,然后在客户端执行查询操作,结果只用到一条记录;如果查询的记录不存在,网络传输的数据实际上是无用的。如此大的数据传输量是不可想象的。因此,人们提出了在服务器中能够执行部分代码的 C/S 结构。

② 在处理时,客户端接收用户请求,并发给服务器;在服务器处理用户请求,最后将结果传回客户端显示或输出。采用这种处理方式的网络通信量较小。客户端向服务器发出的是处理请求,而不是文件请求,处理请求中的代码在服务器执行后向客户端传送处理后的结果。

这样,为了特定任务,客户端上的程序和服务器上的程序协同工作。客户端的代码用于完成用户的输入、输出及数据的检查,而服务器的代码完成对数据库的操作。

C/S 结构的另一个主要特点是其与软件、硬件平台的无关性。数据库服务器上的数据库管理系统集中负责管理数据,它向客户端提供一个开放的使用环境,客户端通过数据库接口,如 ODBC 和 SQL 访问数据库,也就是说,不管客户端采用什么样的硬件和软件,它只要能够通过网络和数据库接口程序连接到服务器,就可对数据库进行访问。

上面讲的 C/S 结构将应用分在客户端、服务器两级,故称其为二层 C/S 结构。总之,二层 C/S 结构的基本工作方式是客户程序向数据库服务器发送SQL请求,服务器返回数据或结果。

在二层 C/S 结构中,Java Applet 或应用程序将直接与数据库进行对话。在这种情况下,需要一个 JDBC 驱动程序来与所访问的特定数据库管理系统进行通信。用户的 SQL 请求被送往数据库中,而处理的结果将被送回给用户。存放数据的数据库可以位于另一台物理计算机上,用户通过网络连接到数据库服务器,这就是典型的 C/S 结构,其中用户的计算机为客户端,提供数据库的计算机为服务器。网络可以是公司内部的 Intranet,也可以是 Internet。

二层 C/S 结构如下图所示:


图 2 二层C/S结构

2) 三层C/S结构

由于二层 C/S 结构系统本身固有的缺陷,它不能应用于一些大型的、结构较为复杂的系统中,故出现了三层 C/S 结构系统,将二层结构中服务器部分和客户端部分的应用单独划分出来,即采用“客户端-应用服务器-数据库服务器”结构,如下图所示。


图 3 三层C/S结构

典型的数据库应用可分为 3 个部分——表示部分、应用逻辑(商业逻辑)部分和数据访问部分,三层 C/S 结构便是对应于这 3 个部分。

应用服务器和数据库服务器可位于同一主机,也可位于不同主机。

客户端应用用户接口部分,负责用户与应用程序的交互,运行在客户端的软件也称为表示层软件。应用服务器存放业务逻辑层(也称为功能层)软件,是应用逻辑处理的核心,实现具体业务。它能响应客户端请求,完成业务处理或复杂计算。若有数据库访问任务,应用服务器可根据客户端的请求向数据库服务器发送 SQL 指令。应用逻辑变得复杂或增加新的应用时,可增加新的应用服务器。

数据库服务器用来执行功能层送来的 SQL 指令,完成数据的存储、访问和完整性约束等,操作完成后再通过应用服务器向客户端返回操作结果。

3) B/S结构

随着 Internet 技术和 Web 技术的广泛应用,C/S 结构已无法满足人们的需求。因为在典型 C/S 结构中,通常为客户安装前端应用程序的做法已不再现实,并且限制客户端工作环境只能基于 Windows、macOS 或 UNIX 等操作系统也不切实际。于是基于浏览器/服务器(Browser/Server,B/S)结构的系统应运而生。

采用 B/S 结构后,在客户端只需安装一个通用的浏览器即可,不再受具体操作系统和硬件的制约,实现了跨平台的应用。

基于 B/S 结构的典型应用通常采用三层结构——“浏览器-Web服务器-数据库服务器”。B/S 结构的工作原理是:通过浏览器以超文本的形式向 Web 服务器提出访问数据库的请求,Web 服务器接收用户请求后,激活对应的 CGI 程序将 HTML 转化为 SQL 结构,将这个请求交给数据库,数据库服务器得到请求后,进行数据处理,然后将处理结果返回给 CGI 程序。CGI 程序再将结果转化为 HTML,并由 Web 服务器转发给请求方的浏览器。

在 B/S 结构中,客户端的标准配置是浏览器,如 IE;业务功能由独立的应用服务器处理,Web 服务器成为应用处理的标准配置;数据仍然由数据库服务器处理。

从本质上讲,B/S 结构与传统的 C/S 结构都是以同一种请求和应答方式来执行应用的,区别主要在于:
这两种结构在不同方面都有着广泛的应用。虽然 C/S 结构在 Internet 环境下明显不如 B/S 结构具有优势,但它在局域网环境下仍具有优势。

多层结构应用软件与传统的二层结构应用软件相比,有可伸缩性好、可管理性强、安全性高、软件重用性好等诸多优点,如何在 Internet 或 Intranet 环境下构建应用软件体系结构就成为一个非常重要的问题,也是现今软件体系研究的一个新热点。

各种技术层出不穷,如最初的静态页面 HTML、简单的 CGI 程序、Java Applet 程序,ASP 等 Web 技术,还有动态的 Java 在线游戏及 PHP 技术等。

实际上,多层的概念是 Sun 公司提出来的。Sun 公司提出的多层应用体系包括 4 层:客户层、顶端 Web 服务层、应用服务层和数据库层。其中顶端 Web 服务层是 Sun 公司多层体系结构中非常重要的一层,它主要起代理和缓存的作用。顶端 Web 服务器的作用是缓存本地各客户端经常使用的 Java Applet 程序和静态数据,通常被放置在客户端所在的局域网内,起到一个 Java Applet 主机(向 Web 浏览器传送 Java Applet 程序的计算机)和访问其他服务的代理作用,与普通代理服务器的作用相同。构建多层结构应用软件时,使用 Java 平台是一个很好的选择,因为它跨越各应用平台。总之,在 Java 平台上构建多层应用软件体系代表着今后 Internet/Intranet 应用的趋势。

JDBC 是一种用于执行 SQL 语句的 Java 语言 API,可以为多种关系数据库提供统一的访问接口。JDBC 由一组用 Java 语言编写的类与接口组成,通过调用这些类和接口所提供的方法,用户能够以一致的方式连接多种不同的数据库系统,如 Access、SQL Server、Oracle、MySQL 等,进而使用标准的 SQL 来存取数据库中的数据,而不必再为每一种数据库系统编写不同的 Java 程序。

Java 语言是编写数据库应用程序的杰出语言之一。JDBC 提供了 Java 应用程序与各种不同数据库进行对话的接口,因此,JDBC 扩展了 Java 语言的功能。例如,可以使用 Java Web 应用程序和 JDBC API 发布动态网页,而该 JDBC 通过局域网将企业员工使用的计算机连接到一个或多个企业内部的数据库服务器上,并且这些数据库服务器使用的操作系统与这些员工所使用计算机的操作系统的类型是无关的。

JDBC 是一种底层的 API,在访问数据库时需要在 Java 程序直接嵌入 SQL 语句。由于 SQL 语句是面向关系的,依赖于关系模型,所以 JDBC 具有简单直接的优点,特别是对于小型应用程序十分方便。需要注意的是,JDBC 不能直接访问数据库,必须依赖数据库厂商提供的 JDBC 驱动程序。

通常情况下使用 JDBC 完成以下操作:
JDBC 提供如下 4 种驱动程序:

相关文章