程序员开发实例大全宝库

网站首页 > 编程文章 正文

如何正确地应用JDBC 设计实现系统持久层中的各个DAO组件

zazugpt 2024-09-08 11:23:59 编程文章 29 ℃ 0 评论

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

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

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

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

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

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

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

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

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

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

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

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

JDBC-ODBC 桥接方式是利用微软的开放数据库互连接口(ODBC API)同目标数据库服务器通讯连接,客户端计算机首先应该安装并配置ODBC Driver和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 程序包,它是对标准的JDBC API的功能扩展,其中提供有DataSource接口,基于DataSource接口可以实现数据库连接池。如下示图为JDK API的帮助文档中有关DataSource接口定义和主要功能说明的局部截图。

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

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

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

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

Class.forName("com.mysql.jdbc.Driver");

(2)创建与数据源(如MySQL数据库系统)的连接

Connection con=

DriverManager.getConnection("jdbc:mysql://localhost:3306/webbank","root","root");

(3)构建出语句类对象并操作数据库表中的数据

PreparedStatement pstmt = con.prepareStatement("select count(*) from account");

rs = pstmt.executeQuery();

(4)获得当前记录集中的某一条记录的各个字段的值

rs.next();

int accountTotalCounter = rs.getInt(1);

(5)关闭查询语句及数据库连接对象

try {

con.close();

}

catch(SQLException e){

}

如下示图所示的程序代码是将上述五个基本步骤组合在一起后的程序代码示例。

5、应用JDBC API实现软件应用系统的持久层时所存在的主要问题

对于一个相对简单的J2EE应用系统的持久层组件,完全可以直接通过JDBC API编程实现对物理数据库系统中的数据库表内数据的访问和操作——应用JDBC API可以说是访问物理数据库系统最原始、最直接的方法。

该方式一方面给软件应用系统的开发人员提供了比较灵活的编程实现手段,但另一方面也增加了软件应用系统的开发人员的技术实现的复杂性。

下图所示为银行账户信息管理系统中的账户信息DAO组件中的转账方法transferAccount的代码实现片段图示。

在基于J2EE系统平台下的软件应用系统开发实现中应用JDBC API的主要问题表现在每个数据访问方法中都需要冗长的错误处理代码来确保ResultSets、Statements以及最重要的Connections等对象在使用后能够正确地被关闭,同时JDBC API也不提供对异常的层次划分——各个方法全部都抛出SQLException异常。

而对象/关系的映射(Object/Relation Mapping,简称ORM)技术是目前企业级系统开发中持久层比较主流的实现技术,并借助于各种支持ORM技术的框架进一步简化对数据库表中数据的访问操作组件的编程实现。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表