存储过程有替代方法吗?

9 database stored-procedures

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

AJ.*_*AJ. 14

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

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

有几个答案:

  • 没有什么别的是相同的存储过程,但也有它你可以考虑的选择.
  • 您可以将所有SQL编写为客户端代码中的字符串(java或其他)
    • 这有各种各样的问题(封装丢失,紧耦合 - >更难维护),但并不是一个好主意.
  • 您可以使用ORM,例如NHibernate,它在客户端逻辑和数据库之间插入一个层.ORM生成SQL以在数据库上执行.使用ORM,表达复杂的业务逻辑比存储过程更难(全面推广!).
  • 一种中途是在java中定义您自己的数据访问层(DAL)(或者您正在使用的Watever)并将其与客户端代码的主体(单独的类/命名空间/等)分开,以便您的客户端调用DAL,DAL解释这些并将SQL发送到数据库,将结果从数据库返回给客户端.


Jer*_*emy 7

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

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

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

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

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

  • 从数据库专家的角度来看,在应用程序中放置必要的业务逻辑毫无意义.数据库往往是从多个来源访问的.基本规则必须在数据库级别,否则您将遇到数据完整性问题. (5认同)
  • 动态SQL获取查询计划,但如果动态sql因参数值而发生更改,则必须重建查询计划,这将会影响性能. (2认同)

Lan*_*rts 3

您可以像存储过程一样安全、快速地执行动态 SQL,只需做一些工作即可。当然,还需要做一些工作才能使存储过程安全且快速。


归档时间:

查看次数:

10096 次

最近记录:

13 年,4 月 前