为什么阿里巴巴Java开发手册里要求禁止使用存储过程?


存储过程 。最早的概念据我推断是来自于Oracle 。最早oracle是只有函数的概念 。依稀记得是oracle8还是9才加的存储过程package的概念 。用于解决函数过于碎片化、不具备复杂的多逻辑功能 。同时便于文件管理加入的概念 。到后期基本所有数据库也都有了存储过程 。如:mysql 。sybase等 。
存储过程是基于数据库底层的语法 。与数据库是相互依存的 。且各个类型数据库语法都不一样 。
Java语言在很大一部分的优势就是为了解耦合和可移植性 。所以也有经典的dao模式 。目的也就是把数据库和业务层分开 。如果直接调用存储过程 。混淆了业务和数据库分层 。打破了Java模式设计的初衷 。而且 。如果用存储过程写 。比如原来用Oracle数据库 。现在客户要求改成免费的Mysql数据库 。意味着基本所有的存储过程全部要重写 。基本不具备可移植性 。
当然 。万事没有绝对 。阿里的整套体系庞大 。数据库的能力强大 。中间件的主机也足够横向扩展 。像我们一般的项目没那么多的主机和算力可搭配 。有时碰上复杂的报表或复杂的逻辑 。也不得不借用数据库存储过程来实现 。
一般来说 。项目上数据库主机的配置比web主机相对强大得多 。且存储过程在数据库操作逻辑上天然的快 。在web主机不能横向扩展的情况下 。也只能借用存储过程来实现 。当然 。用存储过程来处理也是占比很少 。逼不得已情况下才使用 。
其他观点:
存储过程不利于移植 。受数据库限制 。而且阿里巴巴都是大型分布式集群存储过程更是劣势巨大!越是大型的分布式系统越是追求编码业务而不是绑死在数据库上 。因为你不知道那一天就要换数据库了
其他观点:
【为什么阿里巴巴Java开发手册里要求禁止使用存储过程?】Java人多 程序处理数据更方便

    推荐阅读