当前位置:  开发笔记 > 数据库 > 正文

存储过程有替代方法吗?

如何解决《存储过程有替代方法吗?》经验,为你挑选了2个好方法。

是否有任何替代存储过程,安全,快速以及存储过程.我只知道Hibernate.还有其他类似的技术吗?



1> AJ...:

存储过程是放置在数据库上执行的代码(SQL)的地方,所以我理解这个问题的意思

"有没有其他方法来打包在数据库上运行的代码?"

有几个答案:

没有什么别的是相同的存储过程,但也有它你可以考虑的选择.

您可以将所有SQL编写为客户端代码中的字符串(java或其他)

这有各种各样的问题(封装丢失,紧耦合 - >更难维护),但并不是一个好主意.

您可以使用ORM,例如NHibernate,它在客户端逻辑和数据库之间插入一个层.ORM生成SQL以在数据库上执行.使用ORM,表达复杂的业务逻辑比存储过程更难(全面推广!).

一种中途是在java中定义您自己的数据访问层(DAL)(或者您正在使用的Watever)并将其与客户端代码的主体(单独的类/命名空间/等)分开,以便您的客户端调用DAL,DAL解释这些并将SQL发送到数据库,将结果从数据库返回给客户端.



2> Jeremy..:

是.你可以使用动态sql,但我个人更喜欢存储过程.

1)如果您正在使用MS SQL Server,它将生成一个查询计划,该计划应该使存储过程比简单的动态sql更快地执行.

2)在存储过程中修复错误会更容易,特别是如果您的应用程序在多个位置调用该过程.

3)我发现将数据库逻辑封装在数据库中而不是嵌入式sql或应用程序配置文件中是很好的.

4)在数据库中创建存储过程将允许sql server执行一些语法,并在设计时进行验证检查.


从数据库专家的角度来看,在应用程序中放置必要的业务逻辑毫无意义.数据库往往是从多个来源访问的.基本规则必须在数据库级别,否则您将遇到数据完整性问题.
动态SQL获取查询计划,但如果动态sql因参数值而发生更改,则必须重建查询计划,这将会影响性能.
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有