关于 存储过程

本文探讨了存储过程在JAVAEE项目中的使用问题,分析了其带来的挑战,包括移植性差、增加系统复杂度等,并指出在某些场景下存储过程的优势,如提高效率、访问数据库独有特性。
大多数商业的数据库, 如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业务对象的责任。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值