大多数商业的数据库, 如Oracle、SqlServer、 Sybase、 DB2等等, 都提供存储过程支持。其实,在JAVA EE开发中, 关于存储过程的使用问题一直存在很大的争论。 故此, 在我们封装存储过程操作类之前, 还是有必要讨论一下存储过程使用这个问题。
1、 存储过程是不可以跨越数据库移植的, 对存储过程的支持, 各个数据库之间没有一个统一的标准, 使用的语句也差别很大(如: Oracle是pl/sql; SqlServer是TransactionSQL), 很难互相迁移。
2、 在一个JAVA EE项目中, 存储过程的引入容易导致系统变得越来越复杂, 减低了系统的可维护性。
3、 存储过程基本上都是过程语言, 不是面向对象的, 重用性比较差。
4、 如果把业务逻辑都在存储过程处理, 会对数据库要求很高, 容易出现性能问题。 而且, 使得系统难以扩展。
5、 存储过程的引入对JAVA程序员要求提高, 必须掌握数据库的专有语言。
既然存储过程会带来以上这些问题, 那我们是不是一概而论, 在JAVA EE项目中拒绝任何存储过程的使用呢? 笔者认为在JAVA EE中全面否定存储过程是错误的。 在某些情况下, 存储过程对我们解决问题带来明显的好处, 甚至是唯一的方法, 存储过程的好处有:
1、对于处理持久性逻辑, 存储过程更灵活, 可以多个数据表更新, 存储过程的运行速度比同价的JAVA 业务对象要来得快速。
2、 对于那些需要多个sql语句交互才能完成持久性数据逻辑, 存储过程可以很完美地合并它们, 提高效率。
3、 存储过程可以访问数据库独有的特性, 在这很多的时候, 普通的sql语句是做不到的。 这在某些情况下, 将会明显提高应用的效率。
4、 存储过程有时候是整合已有旧系统的必要工具。
如果我们能很清晰地区分开持久性逻辑与业务性逻辑, 使用存储过程将不会破坏我们JAVA EE的体系结构。 记住, 尽量不要让存储过程实现业务逻辑, 这应该是JAVA业务对象的责任。
分享到:
相关推荐
【存储过程】 存储过程是数据库中一组预编译的SQL语句,它可以接收参数,执行特定任务,并返回结果。其优点包括: 1. 提高性能:存储过程在首次编译后,会缓存执行计划,多次调用时无需再次解析,从而提高执行速度。...
根据提供的文档标题、描述、标签以及部分内容,我们可以总结出以下关于存储过程的创建与使用的相关知识点。 ### 一、存储过程的基本概念 存储过程是一种在数据库中存储并编译好的SQL程序,它能够接受输入参数,...
以下是关于存储过程和触发器的详细解释: 1. **存储过程的功能特点**: - **复用性**:存储过程可以被多次调用,减少了重复编写SQL语句的工作。 - **安全性**:可以通过权限控制限制对存储过程的访问,保护数据库...
存储过程是数据库管理系统中预编译的SQL语句集合,它们是数据库中的可重用程序模块,主要用于执行复杂的数据库操作。存储过程在数据库设计和开发中扮演着重要角色,能够提高应用程序的性能、安全性和可维护性。下面...
在本文件夹中,你将找到关于存储过程的详尽资料,涵盖了DB2数据库的存储过程以及Java如何调用存储过程的相关内容。 首先,DB2存储过程是一种强大的工具,允许开发者创建复杂的业务逻辑,这些逻辑可以在数据库级别...
这个压缩包中的"stored_procedure_tutorial.txt"文件很可能包含了关于存储过程的详细教程,包括它们的工作原理、创建、执行以及优势等。 存储过程的主要优点包括性能提升、代码重用、增强安全性、减少网络流量以及...
以下是一些关于存储过程命名的重要原则和方法: 一、命名规范 1. **清晰明了**:存储过程的名称应该直接反映其功能或作用,避免使用模糊不清的名称。例如,如果一个存储过程负责插入用户数据,可以命名为`Insert...
以下是关于存储过程的详细知识点: 1. **定义与作用**: - 存储过程是数据库中的一个对象,它由一组SQL语句组成,用于执行特定的任务。用户可以通过调用存储过程来执行这些预定义的SQL操作,而不是每次都需要编写...
以下是关于Pb调用存储过程以及存储过程创建的详细知识: 首先,`Pb调用存储过程`通常是通过Database窗口或者DataWindow对象来实现的。在Pb中,我们可以通过以下步骤调用存储过程: 1. **声明存储过程**:在Pb的...
关于 Oracle 存储过程的若干问题备忘 在学习 Oracle 存储过程时,需要了解一些常见问题的解决方法。例如,在 Oracle 中,数据表别名不能加 as。在存储过程中,select 某一字段时,后面必须紧跟 into,如果 select ...
1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作数据库中的重要对象,对于设计良好的数据库应用程序...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...
3. **SQL存储过程基础语法.doc**:这是一个关于存储过程基础知识的文档,可能包括了创建、调用、参数传递以及存储过程的管理等内容。 通过这些资源,你可以系统地学习和掌握SQL的基本用法和存储过程的编写技巧,...
ORACLE 存储过程的异步调用 本文讨论了 ORACLE 存储过程的异步调用方法,旨在解决客户端长时间等待存储过程执行的问题。主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包...
DB2存储过程是一种在数据库管理系统中预编译的SQL代码集合,它允许开发人员封装复杂的业务逻辑和数据处理操作,并可以被多次调用。DB2作为一款强大的关系型数据库管理系统,其存储过程功能强大,提高了应用程序的...
存储过程文档--MySQL 存储过程是 MySQL 中的一个强大功能,它允许用户预先将常用的或复杂的工作写入 SQL 语句,并将其存储起来,以便在以后的数据库操作中可以快速调用和执行。存储过程可以提高数据库的执行速度,...
可以将SQL Server存储过程转为oracle存储过程的工具
SQL Server存储过程是一种预编译的SQL代码集合,它们允许数据库开发者封装复杂的业务逻辑和数据操作,提高数据库应用的性能和可维护性。然而,由于存储过程的源代码通常是不可见的,对于需要查看或修改这些过程的...
本文是关于存储过程自动化测试的研究性论文,主要讨论了如何利用JUnit框架和XML技术实现存储过程的自动化测试和回归测试。文章强调了数据库存储过程测试的复杂性以及现有的数据库产品提供的工具的局限性,如它们无法...
本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和解决复杂问题至关重要。 PostgreSQL的存储过程是由一系列SQL语句组成的代码块,可以被多次调用并执行,类似于编程语言中的函数。...