关于 存储过程

本文探讨了存储过程在JAVAEE项目中的使用问题,分析了其带来的挑战,包括移植性差、增加系统复杂度等,并指出在某些场景下存储过程的优势,如提高效率、访问数据库独有特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大多数商业的数据库, 如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业务对象的责任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值