锁定老帖子 主题:存储过程是否被滥用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-18
我们公司也这么做~ 迁移的时候会非常非常麻烦的说...
|
|
返回顶楼 | |
发表时间:2011-11-19
存储过程 确实在处理大数据量操作时能起到提高性能的作用,用起来也蛮方便的,省了很多java代码!~ 就是可移植性太差了!
|
|
返回顶楼 | |
发表时间:2011-11-19
cosmo1987 写道 统一风格确实可能是其中考虑的因素。只是个人觉得存储过程这样的东西。特别是oracle的package这样的东西应该用在更加复杂的逻辑上。对于简单的逻辑用通用的SQL生成类拼出sql然后返回映射对象。需要操作使用时直接调用一个简单方法就可以完成。提高了效率,也不需要对sql的维护。
当然,可能我是来求认同感的吧...自己已经倾向于一个方向了。只是不知道自己这样的倾向是否是对的...是否是正确的设计方式... 你的感觉是对的。存储过程只应该用于解决某些关键的,高度复杂性的过程。 其他的都应该交给数据层完成。 |
|
返回顶楼 | |
发表时间:2011-11-19
最后修改:2011-11-19
Tracy-Lcz 写道 CALL 存储过程和 execu SQL 是一样的。
其实调用存储过程和直接执行sql,从数据库角度看性能上是不一样的。存储过程执行的sql代码还是要回到sql执行区去完成。其实是存储过程区域和sql区域需要相互切换的,从性能上看,和不切换相比还是不一样的。只是对于复杂的业务逻辑,一次性查询访问操作的表很多,如果从java去使用sql对数据进行所有操作的话,性能不及存储过程。而如果把所有需要的操作都写成一个sql的话,可能出现sql过长而无法编译的情况或者重复调用其中的某一个操作。这个时候,存储过程的价值个人觉得才被体现出来了。 |
|
返回顶楼 | |
发表时间:2011-11-19
christy_fang 写道 我们公司也这么做~ 迁移的时候会非常非常麻烦的说...
是的...这个也是一个问题...只是只要使用sql,需要迁移换数据库的话,都会有问题。比如oracle和mysql在分页上的sql写法停不同的 |
|
返回顶楼 | |
发表时间:2011-11-20
企业或大的鲜有换数据库的问题,都是让用户买指定的设备和软件。而且这类应用维护很麻烦,一天有几十个修改是正常的,所有要把逻辑写在java业务层里,就是一个相当麻烦的事,而写在数据库的存储过程里,仅需要重新编译存储过程包就可以了。所有才有把所有业务逻辑写在数据库里的想法和实现。
|
|
返回顶楼 | |
发表时间:2011-11-20
公司里的一般的存储过程由dba吗? 刚学软件 望请教
|
|
返回顶楼 | |
发表时间:2011-11-21
gu_sofia 写道 公司里的一般的存储过程由dba吗? 刚学软件 望请教
看公司的。稍微大一点的公司分工还是比较细致的。会有DBA统一管理数据库。其实DBA很大一部分工作是管理数据。 |
|
返回顶楼 | |
发表时间:2011-11-21
这样没啥不好
java->其他语言,反正数据库相关都在存储过程里毫无压力 或者 数据库->nosql,java里没了sql,同样毫无压力 |
|
返回顶楼 | |
发表时间:2011-11-28
cosmo1987 写道 大家对于所有的dao调用都让java去调用存储过程,是否觉得是对存储过程的滥用呢?
感觉一些很简单的sql查询,全部使用存储过程,美其名曰:实现sql和java代码分离。 这纯属于编造和误用规范, 实现sql和java代码分离,不是使用这种方式。 我们最好使用java编程,让orm给我们做转换,并且不要让它入侵domain层,这样,非常利于代码迁移。比如,你使用oracle和sql server,变化就不会很大,当然有些变化,如果逻辑是java写的,我们就不怕了,否则,无法迁移。 调用存储过程,非常不利于应用sacle,一个数据库,它可以达到极致,但是使用多个数据库,甚至不同的数据库,问题就接踵而至了。问题太多了。 我们尽量少使用存储过程,麻烦大家对概念理解了再使用,不要拍拍脑袋想东西,简直,有点胡闹。 |
|
返回顶楼 | |