Oracle中基于Java的存储过程开发
2011-10-31周岚
周 岚
(芜湖信息技术学院软件工程系,安徽芜湖 241003)
Oracle中基于Java的存储过程开发
周 岚
(芜湖信息技术学院软件工程系,安徽芜湖 241003)
存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,它的执行速度比独立执行同样的程序要快。任何一个设计良好的数据库应用程序都应该用到存储过程。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。文中详细分析了Java存储过程的开发步骤。
Java存储过程;Oracle9i数据库;Java函数
1 存储过程的介绍
1.1 存储过程的概念
存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,它的执行速度比独立执行同样的程序要快。存储过程可以使得对数据库的管理、显示关于数据库及其用户信息的工作容易很多。存储过程可以包含数据流、逻辑以及对数据库的查询。在Oracle9i中应用开发人员除了可使用PL/SQL还可以使用Java来开发他们的业务逻辑,并将这个业务逻辑作为存储过程、函数和触发程序部署在数据库中。
当调用Java存储过程时,数据库会直接运行该存储过程,无需进行编译。相对于SQL语句或PL/SQL块而言,其执行速度更快。
1.2 设计存储过程的方针
(1)在定义存储过程时,要使用其完成单一、相对集中的任务。
(2)在定义存储过程时,不要定义已经由其它特征所提供功能的过程。例如,不要定义强制数据完整性的过程(使用完整性约束)。
1.3 存储过程的类型
Oracle9i支持四种不同类型的存储过程,用PL/SQL或Java,都可以实现全部四种类型的存储过程。这四种存储过程类型是:存储过程、存储函数、数据库触发器和对象类型方法。
1.4 存储过程的调用
在Oracle9i里,这四种存储程序类型的每一种,都可以从不同的调用环境调用,这些调用环境是:SQL语句或DML语句、顶级CALL语法、PL/SQL块、子程序(包)和触发器的隐式调用。
2 教师信息管理系统中Java存储过程的开发和设计
2.1 创建Java存储过程的一般步骤
(1)Java存储过程的开发步骤:编写Java源代码、装载Java代码及类到Oracle9i数据库中、生成调用说明和调用JSP。
要将Java方法转换为Java存储过程需要几个步骤,包括:用loadjava实用程序将Java类加载到数据库中,利用调用规范(Call Spec)发布Java方法,将Java方法、参数类型和返回类型映射到其SQL的对应部分。
(2)编写Java源代码
当开发Java存储过程时,首先应该编写Java源代码。如下所示:
(3)装载Java代码及类到Oracle9i数据库中
在编写了Java源代码之后,接下来应该将Java代码及相应的Java类装载到Oracle9i数据库中。如图1所示:
装载Java代码及类到RDBMS有以下两种方法:
使用loadjava工具,通过该工具可以快速装载Java源代码(.java)、Java二进制代码(.class)以及Java打包文件(.jar)。
使用CREATE Java、ALTER Java装载Java代码。
图1 Oracle9i中的Java类
(4)生成调用说明
在装载了Java类之后,接下来应该生成对public static方法的调用说明,最终完成Java存储过程的开发工作。
完成上述步骤之后,就完成了Java存储过程的开发工作,然后就可以调用并执行该Java存储过程了。
2.2 使用Java开发过程
过程用于执行某种操作。需要注意的是,过程所对应的Java方法返回值必须为空(void)。本节以创建用于插入、修改和删除THEACHERS表的JSP为例,说明使用Java开发过程的方法。如图2所示:
图2 使用Java开发过程示例
下面讲述完成上述任务的方法及过程:
(1)编写Java源代码
程序清单如下(manipulate_teachers.java):
(3)发行Java,生成调用说明
在装载了Java类后,就可以发行该Java类,并生成调用其方法的过程说明了。下面是完成该项任务的方法:
(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 9iDBA手册[M].蒋蕊,王磊,等,译.北京:机械工业出版社,2005.
[2] 丁岳伟,彭敦陆.Java程序设计[M].北京:高等教育出版社,2005.
[3] John Carnell,等.Oracle 9iJava程序设计—使用PL/SQL和Java的解决方案[M].康博,译.北京:清华大学出版社,2002.
[4] 周悦芝.Oracle J2EE应用开发[M].北京:清华大学出版社,2005.
[5] 王洪,朱锐.数据库存储过程设计及应用[M].电子信息对抗技术,2009(2).
责任编辑:孟云玲
TP311.13
A
1671-8275(2011)01-0004-03
2010-09-08
安徽省青年优秀人才基金资助项目“面向IT产业需求如何培养高职软件技术人才”(项目编号:2009SQRZ224)阶段性成果。
周岚(1978-),女,安徽绩溪人,芜湖信息技术学院软件工程系讲师,硕士。