不建议使用存储过程的原因

其一: 各种数据库的存储过程语法相差很大,给将来的数据库移植带来很大的困难

其二: 不利于版本控制,代码无法Diff和回滚,多人编辑无法同步。

虽然数据库建模工具可以把脚本保存为文件,然后进行Diff,但终究功能有限。

其三: 编码不便,其实也就是说数据库脚本语言功能有限,

无法定义数组,集合,为了循环需要使用效率低下的游标

其四: 调试功能不强。

虽然在数据库客户端工具里,也可以调试,却也和现在功能强大IDE集成工具的调试

却不可同日而语。而且现在一般调试是由应用程序发起的,从应用程序却又无法

跟踪调试回存储过程中。所以必须两处调试,终究不便。

其五: 存储过程会调用函数,视图或者别的存储过程,但是数据库的编辑工具,

不像时下的开发工具,能够准确定位对象或对象方法,所以带来维护,修改的困难。

其五: 现在大多应用级系统会分层处理,数据层,业务层,界面层。

我们把大量使用存储过程的C/S或者B/S系统称为两层半,也就是说存储过程就是我们

说的半层,也就是把大量业务逻辑放在存储过程里。业务逻辑往往是系统的核心所在,

往往修改会很频繁,存储过程的使用会带来修改困难,修改流程困难,调试麻烦,

所以付出的代价是很大的。

其六: 面向业务编程,而不要面向数据编程。

面向业务编程,其实也就是之前我说的领域逻辑模式中的领域模型,也是我不赞成用存储过程

的根本原因。

如果大量用到存储过程,就势必会和数据表、字段、字段类型等等关系形数据库打交道,

面向对象的优势就体现不了,也就无从谈起继承,多态,设计模式等来适应业务变化。

很多J2EE的项目甚至不用存储过程,也照样开发的很好。

其七: 也许会遇到业务逻辑特别复杂的情况,遇到这种情况,我的感觉是你应该回头看看业务建模是否合理。

资料参考:http://www.cnblogs.com/jes_shaw/archive/2009/05/20/1468505.html

mysql为什么不使用存储过程_题外话,为什么不用数据库的存储过程相关推荐

  1. 一个简单的题外话:周五,我们的心情

    *一个简单的题外话:周五 盼望着每个周五,因为它重拾而又蓄力待发! (看代码之余看看大家的小心思,欢迎评论你们的周五期待的是什么:?) 也是这对于我们这里90后95后的程序猿吧: 也是我在公司几个月的 ...

  2. 【Leetcode栈与队列】1047.删除字符串中的所有相邻重复项 6120.数组能形成多少数对(一些题外话和做题经验!!看作对对碰游戏!!)

    文章目录 题外话 1.游戏开发可能使用栈结构 2.编程语言的一些功能实现也会使用栈结构 Leetcode 1047.删除字符串中的所有相邻重复项 1.问题描述 2.解决方案 Leetcode 6120 ...

  3. 题外话:学习算法再出发

    题外话 作为一个生信入门级的新手,我一直对算法心驰神往,希望有朝一日能成为高手.可是多少次在学习算法的路上我都半途而废,时常感慨于"道阻且长".阻碍我的不仅有对远方艰辛的畏惧,还有 ...

  4. mvc调用mysql存储过程_使用.NET MVC +EF调用oracle的存储过程

    题记: 需求如题,在网上搜索了一下,没有特别贴合我需求的资料,只好自己摸索,东拼西凑了解了一点东西慢慢尝试做了出来. 难点:.NET是微软产品,主要支持Sql Server数据库,对于Oracle的数 ...

  5. java mysql单库多表_第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  6. node 存储过程_用Node.js操作跨平台数据库Firebird

    FireBird Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows.linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能.它既能作为多用户环境下的数据库服务 ...

  7. mysql 创建用户并授权_教你MySQL-8.0.x数据库授权

    Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码: [root@host]# mysqladmin -u root password "new_p ...

  8. DirectX 9.0c游戏开发手记之RPG编程自学日志之11: 题外话

            本文由哈利_蜘蛛侠原创,转载请注明出处!有问题请联系2024958085@qq.com 这一期是特别篇,不讲具体的编程知识了.在讲述内容之前,我首先要恭喜你--对,没错!就是你!坐在显 ...

  9. mysql手机号段地区库_最新手机号段归属地数据库 2019年12月版 441831条记录

    2019年12月1日版 441831条记录 最新 手机号段数据库 号码归属地数据库 移动号段 联通号段 电信号段 170 171 号段(虚拟运营商) 权威 全面 准确 规范 字段包括 省份 城市 运营 ...

最新文章

  1. 使用C#开发数据库应用系统
  2. 【转】SAP LIST 画框的FORM
  3. 利用RobHess源码实现SIFT算法及RANSAC去错的图像特征提取匹配及去除错匹配
  4. Unity资源打包之Assetbundle
  5. 百亿级日访问量的应用如何做缓存架构设计?
  6. DWF是个什么格式,要怎么进行相应的格式转换?
  7. 进阶EXCEL:开发工具的组合框
  8. javasript | 鼠标经过表格行变色
  9. vs各个版本下载路径
  10. platform驱动模型使用总结
  11. 数据湖和数据仓库区别介绍
  12. python从键盘输入10个整数算出奇数偶数的和_画出流程图,并编程实现: 从键盘上输入10个整数型的数值,分别统计奇数和偶数的个数。_概率论与数理统计答案_学小易找答案...
  13. 智能硬件---智能硬件产品经理需要具备的知识
  14. android网络的评分机制、连接国内ap wifi不回连问题
  15. Kibana文档操作
  16. c语言编程第四版李丽娟课程,C语言程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 李丽娟 C语言程序设计教程(第4版)_第4章_分支结构.pdf...
  17. A direct formulation for sparse PCA using semidefinite programming
  18. spring mvc中实现csrf安全防御简记
  19. 《东周列国志》第九十九回 武安君含冤死杜邮 吕不韦巧计归异人
  20. 关于解决电脑有网络但是浏览器却打不开的解决方法

热门文章

  1. 1分钟对接淘宝/菜鸟/拼多多/京东等电商平台的电子面单
  2. 励志,一年时间,从小白到进入阿里巴巴核心部门,他是这么做的...
  3. lichee nano 荔枝派入门——上手
  4. 同样是高并发,QQ/微博/12306的架构难度一样吗?
  5. 纪伯伦 你的儿女其实不是你的
  6. Python实现飞书机器人定时发送文本、图片等群消息
  7. linux edt时间是什么,edt时间(edt时间 现在)
  8. linux和window时间不一致,linux时间与Windows时间不一致的解决
  9. 登录成功后,如何同步用户产生的各种数据
  10. android动画水波纹外扩,Android实现水波纹外扩效果的实例代码