为什么阿里巴巴的 Java 手册不推荐使用存储过程?
为什么阿里巴巴的 Java 手册不推荐使用存储过程?
回答重点
1)可移植性差
- 数据库依赖性:存储过程是在数据库服务器上执行的,通常使用数据库特定的 SQL 方言和功能,这会导致应用程序的数据库依赖性增加,迁移到其他数据库系统时有成本。
- 跨平台问题:不同的数据库系统实现存储过程的方式和支持的功能不完全相同,维护比较复杂。
2)调试困难
- 调试工具有限:相比应用层代码,数据库层的存储过程缺乏良好的调试工具和环境。常规的代码调试方法(如设置断点、逐步执行)在存储过程中无法直接应用,导致复杂业务场景,不容易定位错误。
3)维护复杂
- 存储过程通常与应用程序代码分离,维护起来需要同时管理数据库层和应用层的逻辑,增加了代码管理的复杂性。
扩展知识
什么是存储过程
存储过程是存储在数据库中的一段预编译的 SQL 代码,封装了一组操作来执行特定的业务逻辑。
例如我们想创建一个存储过程,方便通过员工 ID 获取员工的姓名和薪资:
1 | DELIMITER $$ |
直接利用 CALL 就可以调用存储过程:
1 | -- 定义变量用于存储输出参数 |
它的优点是预编译提升执行速度且减少网络通信开销、提高代码重用性。
Comments