【发布时间】:2011-06-03 04:36:37
【问题描述】:
我搜索了...。我看到了许多优点,但似乎所有优点都来自与内联 SQL 的比较。我知道内联 SQL 不好。但是为什么要与一个坏的比较来展示另一个更好呢?
如果使用存储过程(可能只使用存储过程),似乎没有任何优势仍然存在。存储过程在安全性、性能方面无疑提供了性能优势(如果 ORM 可以运行存储过程,则存储过程编写得不好),编写良好的存储过程是自动存储库(模式)。存储过程绝对可以提供更好的事务和事务隔离控制。
我非常感谢您的回答——ORM 如何优于使用存储过程的架构良好的应用程序。
--- 感谢到目前为止我收到的所有答案......似乎优势仍然来自在代码中使用 ORM 的“动态生成的 SQL”与使用“静态编写的内联 SQL”进行比较。是的,它有优势。但这不是他的问题。
这个问题最好表述如下:
如果您考虑使用存储过程来实现您的业务逻辑(SP 可以编写得非常高级,也非常高效),在应用程序代码(.NET、JAVA)中,您有一个非常薄的存储层包装器按业务需要组织的程序。我的问题是 ORM 如何胜过这种架构(当然是精心设计的架构)。
【问题讨论】:
-
我不明白 ORM 是如何与 SPROC 正交的。 SPROC 定义了一个面向动作的接口,但 ORM(即使是那些不尝试将 OO 概念强加在关系模型上的那些)专注于在表以外的模型中公开数据——例如定义良好的元组(或对象)的列表。一些 ORM 将允许使用适当的 SPROC 操作,而另一些则完全避开 SPROC。所以......“这取决于”。