到底是将应用逻辑放在存储过程中还是用bean中实现?

现在我们的开发中大量用到存储过程,应该说稍微复杂点的计算我们都放到存储过程中了,但是我又看到大量的例子不使用存储过程,而是将计算过程都放到了class中实现,请问,这两种方法各自的利弊是什么??

portability vs. efficiency

使用 JavaBean 的方式系统具有相对较好的可移植性,但是我们不能不看到既使是使用 JDBC,有时因为各种数据库之间的区别,我们还是要使用一些数据库特有的方法。

使用存贮过程,需要针对不同的数据库写不同的实现。各个数据库系统中SQL的区别比起 JDBC 来是大一些,因些可移植性不是很好,但是从效率上来说,这种方式应该比将逻辑放入 JavaBean 中来得快。因为有时一个逻辑操作需要与数据库做多次的访问才能完成,而这时,如果使用数据库脚本,就可以充分利用数据库的优化特性,但如果使用JavaBean, 就会多很多的网络操作,效率上当然会慢。

从上面看来,对你的应用,你要自己做出判断。

既然你使用了java,那么表示你已经认同代码的质量是第一,那么当然使用Javabean, EJB的真正核心就是将数据库屏蔽起来,重要逻辑都包装在Enterprise Javabeans中,这样可以适合一个分布式的环境。

你如果将逻辑放在存储环境,你又走上了传统的大型主机模式。

"你如果将逻辑放在存储环境,你又走上了传统的大型主机模式。"
That does not mean it's bad design.

对于提高性能和扩展性言,要么放在EJB中,要么放在存储过程中

"你如果将逻辑放在存储环境,你又走上了传统的大型主机模式。"
That does not mean it's bad design.

That's bad design.

很可能导致软件死亡,亲身体会,失败几次,决心放弃数据库驱动模式设计的学习。
失败项目:聊城烟草物流系统,包头烟草物流系统,德州烟草物流系统。准备辞职跟过一位老大