如何正确地应用JDBCAPI设计实现应用

软件项目实训及课程设计指导——如何正确地应用JDBCAPI设计和实现应用系统持久层中的各个DAO组件

1、Java系统平台中实现数据库连接技术相关的API

Java数据库连接技术(JDBC,JavaDataBaseConnectivity)是一种将Java语言与SQL语句相互结合且独立于特定的物理数据库系统的应用程序编程接口(API,ApplicationProgrammingInterface)。

JDBC其实也是一种可用于执行SQL语句的JavaAPI规范,它为物理数据库系统的应用开发人员、数据库系统的前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。如下示图为体现JDBC如何帮助Java程序操作访问物理数据库系统中相关数据的工作原理示例图。

从早期的JDBC1.0到现在的JDBC4.0技术标准,JDBC所提供的各种功能也在不断地丰富和完善中。在JDBC4.0中新增自动加载JDBC驱动程序类的功能,对数据库连接管理也有所增强、并支持RowIdSQL类型和完善了SQL异常处理等。

如下示图说明JDBC不仅为Java应用程序提供操作访问物理数据库系统的接口,也为数据库系统的前台工具开发人员提供了一种标准的应用程序设计接口,为此MyEclipse开发工具也可以应用JDBC辅助Java开发人员操作访问物理数据库系统中的目标数据。

2、了解和熟悉JDBCAPI中主要的功能类

Java程序员可以应用JDBCAPI实现与目标数据库的连接,然后再向目标数据库系统发送SQL语句,最后根据特定的数据访问操作的要求获得处理后的结果数据——也就是连接数据库系统、操作目标数据和获得最终的操作结果。

而完成这三个阶段所涉及的功能,主要是通过对Connection、Statement、PreparedStatement、CallableStatement和ResultSet等接口的应用编程而实现。

读者可以查询JDKAPI的帮助文档获得这些类和接口中的方法定义的细节,下图所示为JDKAPI的帮助文档中有关java.sql包的局部内容的截图。

3JDBC中所提供的创建数据库连接的各种实现方式

(1)利用JDBC-ODBC桥方式连接数据库

JDBC-ODBC桥接方式是利用微软的开放数据库互连接口(ODBCAPI)同目标数据库服务器通讯连接,客户端计算机首先应该安装并配置ODBCDriver和JDBC-ODBC桥两种形式的驱动程序。并且还需要在Window操作系统的控制面板中配置出目标数据库的数据源名称。下图所示为对某个数据库的数据源名进行配置的示图。

由于ODBC-JDBC桥方式的底层实现不是多线程的,也就是说它不适合在需要并发执行的企业级软件应用系统的开发中使用;同时它也使得软件应用系统局限于Windows操作系统平台中运行,而使得软件应用系统失除了基于Java平台所具有的平台无关性。

(2)利用某个数据库系统的JDBC驱动程序直接连接方式

这只需要下载获得某个数据库的JDBC驱动程序JAR包文件,并将该JAR包文件放在项目的classpath路径中。然后由JDBC驱动程序JAR包文件中的数据库连接实现类完成对目标数据库的连接。下图所示表示将MySQL的JDBC驱动程序JAR包文件添加到银行账户管理系统中的WEB-INF/classes目录中的图示。

(3)基于DataSource接口实现的数据库连接池方式

由于JDBC的直接连接方式要求每一次数据访问请求都必须出现建立数据库连接和操作完毕后再关闭数据库连接,而数据库连接的打开和关闭是一件既消耗资源又费时的工作,如果频繁发生(这在Web应用系统中比较常见),应用系统的总体性能必然会急剧下降,甚至会导致系统崩溃。

在JDBC2.0版中新增加了javax.sql程序包,它是对标准的JDBCAPI的功能扩展,其中提供有DataSource接口,基于DataSource接口可以实现数据库连接池。如下示图为JDKAPI的帮助文档中有关DataSource接口定义和主要功能说明的局部截图。

而数据库连接池技术实现方案是解决这个问题最常用的方法——因为数据库连接池技术是在服务器启动时,预先就建立好指定数量的数据库连接对象;而对于一个数据库访问请求,直接从连接池(也就是内存)中得到一个连接并完成对数据库中的数据的访问操作,操作完毕后再将数据库连接对象重新放回到连接池中(此时并没有真正地关闭数据库的物理连接)以便能够在下次请求时重用。

下图所示为在银行账户管理系统中应用ApacheDBCP组件实现数据库连接池功能的部分实现代码的图示。

4、JDBC编程实现的基本步骤和实现代码示例

(1)加载连接数据库的驱动程序(把指定的Java类文件装载到JVM中)

Class.forName(


转载请注明:http://www.aierlanlan.com/rzgz/5646.html