当开发中的业务逻辑既可以在数据库中完成(存储过程),也可以在java的service层中完成时,我们应该依据什么样的标准来进行选择?各自可能的优点和缺点有那些? 

        数据库中处理业务的观点是为了效率。认为存储过程的效率比程序代码要好。但是存储过程最大的缺点是不好维护,传统的面向过程的代码是很难维护。而且SQL语句有时候还是有一定限制的,不能很好的处理业务,但一般的业务还是完成可以处理滴。
      支持程序(java)处理业务的观点是为了代码的灵活性,效率本来也不低。可以相对更灵活的处理各种业务。但是读取数据库的数据量比存储过程多,所以很多人都认为效率比较低。不过通过缓存等技术还是可以提高效率。

     其实这两种思路并不是绝对冲突的,可能在某个地方使用一种方法比较合适,在另一个地方使用另一种方法更合适。而且根据具体的业务逻辑也会表现出各自不同的优点!

      个人还是比较倾向于Java,毕竟对java的熟悉还是远远要大于数据库的。将业务逻辑放入Java代码中,表现层-业务逻辑层-数据访问层的经典划分MVC还是很有道理的,尽管实现起来稍嫌麻烦,但在高并发的情况下容易扩展。

       在整个软件生命周期的过程中,维护用的时间是最长的,也会在很大程度上的提高软件成本。所以,软件必须要可维护性强。客户的需求是不断变化的,这个是软件开放过程中的真理,因此,扩展性也是必不可少的。总得来说,劈开那些说java将死的谣言,我还是比较推崇在java程序中处理业务!