小编典典

存储过程和ORM

python

与使用ORM(nHibernate,EF等)处理某些CRUD操作相比,存储过程的目的是什么?要调用存储过程,我们只是传递一些参数,并使用ORM发送整个SQL查询,但这仅仅是性能和安全性问题还是还有其他优点?

我之所以这样问是因为我从未使用过存储过程(我只是用ORM编写所有SQL语句并执行它们),而一位客户告诉我,我必须在下一个项目中使用存储过程,我试图弄清楚何时使用它们。


阅读 331

收藏
2021-01-20

共1个答案

小编典典

存储过程通常用SQL的方言编写(用于SQL Server的T-SQL,PL-SQL Oracle等)。那是因为它们为SQL添加了额外的功能,以使其更加强大。另一方面,您有一个ORM,比如说可以生成SQL的NH。

ORM生成的SQL语句在编写T-SQL存储过程方面不具有相同的速度或功能。这是两难的地方:我是否需要与SQL数据库供应商绑定的超快速应用程序,难以维护,还是需要灵活,因为我需要定位到多个数据库,并且我更喜欢通过编写HQL查询而不是SQL来缩短开发时间那些?

存储过程比SQL语句快,因为它们已在数据库引擎中预编译,并缓存了执行计划。您无法在NH中执行此操作,但是还有其他选择,例如使用Cache Level 1或2。

另外,尝试使用NH进行批量操作。在这些情况下,存储过程非常有效。您需要考虑到SP与数据库进行了更深层次的对话。

选择可能不是那么明显,因为这完全取决于您正在处理的方案。

2021-01-20