是否存在替代存储过程,安全快速以及存储过程的替代方法。我只知道Hibernate。还有其他类似的技术吗?
答案 0 :(得分:12)
存储过程是放置在数据库上执行的代码(SQL)的地方,所以我理解这个问题意味着
“有没有其他方法来打包在数据库上运行的代码?”
有几个答案:
答案 1 :(得分:7)
是。你可以使用动态sql,但我个人更喜欢存储过程。
1)如果您正在使用MS SQL Server,它将生成一个查询计划,该计划应该使存储过程比简单的动态SQL更快地执行。
2)修复存储过程中的错误可能更容易,特别是如果您的应用程序在多个位置调用该过程。
3)我发现将数据库逻辑封装在数据库中而不是嵌入式sql或应用程序配置文件中是很好的。
4)在数据库中创建存储过程将允许sql server在设计时执行一些语法和验证检查。
答案 2 :(得分:4)
答案 3 :(得分:3)
您可以像存储过程一样安全快速地执行动态SQL,只需要一些工作。当然,使存储过程安全且快速也需要一些工作。
答案 4 :(得分:2)
存储过程是子例程 可用于访问的应用程序 关系数据库系统。存储 程序(有时称为proc, 实际上是sproc,StoPro或SP) 存储在数据库中的数据 字典。
存储过程的典型用途 包括数据验证(集成 进入数据库)或访问控制 机制。此外,存储 程序用于巩固和 集中最初的逻辑 在应用程序中实现大或 可能需要的复杂处理 执行几个SQL 语句被移动到存储中 程序,以及所有应用程序调用 只是程序。
存储过程类似于 用户定义的函数(UDF)。该 主要区别在于UDF可以 像其中任何其他表达一样使用 SQL语句,而存储 必须使用以下方法调用过程 CALL声明
..来自Wikipedia
我认为您需要阅读这篇文章并重新构建您的问题。 Hibernate与存储过程无关。
答案 5 :(得分:1)
如果你说为什么要寻找替代品,它会有所帮助, 你不喜欢存储过程怎么样?
某些数据库(例如PostgreSQL)也允许您编写存储过程 不同的语言。所以如果你真的想要,你可以用Python或者用它们写 Java等,而不是SQL。
答案 6 :(得分:0)
嗯,在我看来,存储过程的明显替代方法是编写应用程序代码。而不是说,每次发布信用额度时编写存储过程来发布借记,您可以编写写入两者的应用程序代码。
也许我在这里过于简单,或者忽略了问题的重点。
答案 7 :(得分:0)
我认为OP意味着直接在他的应用程序代码中编写所有数据库代码的替代方法是调用存储过程或使用ORM(例如Hibernate)在他的应用程序代码和数据库之间引入一层分离,但是他们是非常不同的东西。
使用存储过程可以将SQL保存在与应用程序代码分开的位置。使用Hibernate可以避免完全编写SQL并提供关系数据库的对象表示。
您走的方式取决于应用程序和您自己的偏好。