关于 存储过程
???? 大多数商业的数据库, 如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业务对象的责任。? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |