Oracle中基于Java的存储过程开发研究
2010-11-15孔鲲鹏
周 岚 孔鲲鹏
(1芜湖信息技术职业学院,安徽 芜湖 241003)
(2巢湖学院,安徽 巢湖 238000)
Oracle中基于Java的存储过程开发研究
周 岚1孔鲲鹏2
(1芜湖信息技术职业学院,安徽 芜湖 241003)
(2巢湖学院,安徽 巢湖 238000)
存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,它的执行速度比独立执行同样的程序要快。任何一个设计良好的数据库应用程序都应该用到存储过程。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。文中详细分析了Java存储过程的开发步骤。
Java存储过程;Oracle9i数据库;Java函数
1 存储过程的介绍
1.1 存储过程的概念
存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,它的执行速度比独立执行同样的程序要快。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。存储过程可以包含数据流、逻辑以及对数据库的查询。在Oracle9i中应用开发人员除了可使用PL/SQL还可以使用Java来开发他们的业务逻辑,并将这个业务逻辑作为存储过程、函数和触发程序部署在数据库中。
当调用Java存储过程时,数据库会直接运行该存储过程,无需进行编译。相对于SQL语句或PL/SQL块而言,其执行速度更快。
1.2 设计存储过程的方针
1.2.1 在定义存储过程时,要使用其完成单一、相对集中的任务。
1.2.2 在定义存储过程时,不要定义已经由其它特征所提供功能的过程。例如,不要定义强制数据完整性的过程(使用完整性约束)。
1.3 存储过程的类型
Oracle9i支持四种不同类型的存储过程,用PL/SQL或Java,都可以实现全部四种类型的存储过程。这四种存储过程类型是:“存储过程、存储函数、数据库触发器和对象类型方法”。[1]
1.4 存储过程的调用
在Oracle9i里,这四种存储程序类型的每一种,都可以从不同的调用环境调用,这些调用环境是:“SQL语句或DML语句、顶级CALL语法、PL/SQL块、子程序(包)和触发器的隐式调用”。[2]
2 教师信息管理系统中Java存储过程的开发和设计
2.1 创建Java存储过程的一般步骤
2.1.1 Java存储过程的开发步骤:编写Java源代码、装载Java代码及类到Oracle9i数据库中、生成调用说明和调用JSP。
要将Java方法转换为Java存储过程需要几个步骤,包括:用loadjava实用程序将Java类加载到数据库中,利用调用规范(“Call Spec”[3])发布Java方法,将Java方法、参数类型和返回类型映射到其SQL的对应部分。
2.1.2 编写Java源代码
当开发Java存储过程时,首先应该编写Java源代码。如下所示:
2.1.3 装载Java代码及类到Oracle9i数据库中
在编写了Java源代码之后,接下来应该将Java代码及相应的Java类装载到Oracle9i数据库中。如图1所示:
图1 Oracle9i中的Java类
装载Java代码及类到RDBMS有以下两种方法:
▶使用loadjava工具,通过该工具可以快速装载 Java 源代码(.java)、Java 二进制代码(.class)以及 Java 打包文件(.jar)。
▶ 使用CREATE Java、ALTER Java装载 Java代码。
2.1.4 生成调用说明
在装载了Java类之后,接下来应该生成对public static方法的调用说明,最终完成Java存储过程的开发工作。
完成上述步骤之后,就完成了Java存储过程的开发工作,然后就可以调用并执行该Java存储过程了。
2.2 使用 Java开发过程
过程用于执行某种操作。需要注意的是,过程所对应的Java方法返回值必须为空(void)。本节以创建用于插入、修改和删除THEACHERS表的JSP为例,说明使用Java开发过程的方法。如图2所示:
图2 使用Java开发过程示例
下面讲述完成上述任务的方法及过程:
2.2.1 编写Java源代码
程序清单如下(manipulate_teachers.java):
/*建立到数据库的缺省连接*/
/*构造动态SQL语句*/
/*使用try...catch语句抓取并抛出例外*/try{
/*准备动态SQL语句*/
/*设置动态SQL参数值*/
2.2.2 装载Java代码及类到Oracle9i数据库中
在编写了Java源代码之后,就可以将Java对象装载到Oracle9i数据库中了。下面是完成这项任务的方法:
//设置环境变量classpath
2.2.3 发行Java,生成调用说明
在装载了Java类后,就可以发行该Java类,并生成调用其方法的过程说明了。下面是完成该项任务的方法:
2.2.4 调用JSP
在生成了调用Java方法的过程说明之后,我们就可以调用JSP了。例如://插入一条记录
2.2.5 分析
在这我们使用了Java存储过程,与PL/SQL相比,使用Java语言开发存储过程只被发送到数据库一次,相对于SQL语句或PL/SQL块而言,其网络通信量更小。而且当调用Java存储过程时,数据库会直接运行该存储过程,无需进行编译。相对于SQL语句或PL/SQL块而言,它省去了编译的时间,因此其执行速度更快。
2.3 使用Java开发函数
函数用于返回特定数据。可通过创建用于返回教师所教授的课程标题,以及课程数为例,说明使用Java开发函数的方法。如图3所示:
图3 使用Java开发函数示例
3 结束语
任何一个设计良好的数据库应用程序都应该用到存储过程。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。存储过程可以帮助你在代码中分离逻辑。Oracle数据库与Java VM的集成可以创建可移植、功能强大和数据库无关的数据逻辑和持续性逻辑。Java语言具有更强大的运算能力,提供了更多的运算方法,可以应用于更多的数据库系统(如 Sybase、DB2、Informix 等等)。 Java的存储过程可以解决不同数据库厂商使用各种专有的、且依赖于数据库的实现语言的问题。利用 Java 存储过程沟通 SQL、XML、Java、J2EE 和Web服务。
[1]Kevin Loney,Marlene Theriault等著,蒋蕊,王磊等译.Oracle 9i DBA 手册[M].北京:机械工业出版社,2005.
[2]John Carnell等著,康博译.Oracle 9i Java程序设计—使用PL/SQL和Java的解决方案[M].北京:清华大学出版社,2002.
[3]丁岳伟,彭敦陆编著.Java程序设计[M].北京:高等教育出版社,2005.
[4]周悦芝著.Oracle J2EE应用开发[M].北京:清华大学出版社,2005.
[5]王洪,朱锐.数据库存储过程设计及应用[J].电子信息对抗技术,2009,(2):59-63.
RESEARCH AND DEVELOPMENT OF JAVA STORED PROCEDURES IN ORACLE
ZHOU Lan1KONG Kun-peng2
(1 Wuhu Vocational College of Information Technology,Wuhu Anhui 241003)
(2 Chaohu University,Chaohu Anhui 238000)
Stored procedure is a database object which saves plans in database server, so it runs faster.Any well designed database application should adopt stored procedure, for it makes the management of database, the display of database and users informationeasier.In this paper we analyze in detail the developing steps of stored procedure in Java.
stored procedure in Java; Oracle9i database; function in Java
TP311.52
A
1672-2868(2010)06-0030-04
2010-06-15
安徽省青年优秀人才基金(项目编号:2009SQRZ224)
周岚(1978-),女,安徽绩溪人。芜湖信息技术学院软件工程系教师,讲师,硕士,研究方向:软件技术。
责任编辑:陈 侃