是否有任何替代存储过程,安全,快速以及存储过程.我只知道Hibernate.还有其他类似的技术吗?
存储过程是放置在数据库上执行的代码(SQL)的地方,所以我理解这个问题的意思
"有没有其他方法来打包在数据库上运行的代码?"
有几个答案:
没有什么别的是很相同的存储过程,但也有它你可以考虑的选择.
您可以将所有SQL编写为客户端代码中的字符串(java或其他)
这有各种各样的问题(封装丢失,紧耦合 - >更难维护),但并不是一个好主意.
您可以使用ORM,例如NHibernate,它在客户端逻辑和数据库之间插入一个层.ORM生成SQL以在数据库上执行.使用ORM,表达复杂的业务逻辑比存储过程更难(全面推广!).
一种中途是在java中定义您自己的数据访问层(DAL)(或者您正在使用的Watever)并将其与客户端代码的主体(单独的类/命名空间/等)分开,以便您的客户端调用DAL,DAL解释这些并将SQL发送到数据库,将结果从数据库返回给客户端.
是.你可以使用动态sql,但我个人更喜欢存储过程.
1)如果您正在使用MS SQL Server,它将生成一个查询计划,该计划应该使存储过程比简单的动态sql更快地执行.
2)在存储过程中修复错误会更容易,特别是如果您的应用程序在多个位置调用该过程.
3)我发现将数据库逻辑封装在数据库中而不是嵌入式sql或应用程序配置文件中是很好的.
4)在数据库中创建存储过程将允许sql server执行一些语法,并在设计时进行验证检查.