大多数商业的数据库, 如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业务对象的责任。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。