使用ORM的优缺点

时间:2011-01-12 10:51:38

标签: orm

我想讨论使用ORM(例如ADO.NET)的优点和缺点。

优点:

  • 加速开发 - 消除了对重复SQL代码的需求。
  • 缩短开发时间。
  • 降低开发成本。
  • 克服供应商特定的SQL差异 - ORM知道如何编写特定于供应商的SQL,因此您不必这样做。

缺点:

  • 当他们学习使用ORM进行编程时,开发人员的工作效率会下降。
  • 开发人员对代码实际执行的内容失去了理解 - 开发人员更容易使用SQL。
  • ORM趋于缓慢。
  • ORM无法与复杂查询的SQL查询竞争。

总之,我认为使用ORM的优势(主要是减少执行重复性任务所花费的时间)远远超过ORM的缺点,例如:很难掌握。

人们可以指出我出错的地方并建议任何进一步的优点/缺点。

2 个答案:

答案 0 :(得分:25)

  

“ORM无法与SQL竞争   查询复杂查询。“

  • LINQ-SQL和实体框架都允许复杂查询,甚至将SQL查询结果转换为对象。
  

“开发人员对此缺乏了解   代码实际上在做什么 -   开发人员更善于控制使用   SQL“。

  • 如果你知道自己在做什么,那就不是了。 SQL分析器足以查看已翻译的SQL查询。
  

“ORM趋于缓慢。”

  • 是的,但延迟加载和一些智能选项可以使它几乎一样快。
  

“开发人员生产力下降的同时   他们学会用ORM编程。“

  • Hibernate和实体框架可能需要时间来学习,但从长远来看,它们将节省开发时间。另一方面,LINQ-SQL几乎没有学习曲线。

我说,使用ORM但要牢记这一点。

  1. 设计查询并编写代码 这将导致最少的数字 与服务器的往返。它的 往返的开销 这需要时间。

  2. 了解其他经历     人们已经选择了     在深入挖掘之前进行ORM。

  3. 始终将您的查询与         实际的在SQL中执行         服务器分析器。

  4. 修改 您不会将ORM用于性能危急情况,就像使用.Net或Java编写操作系统一样。选择前请考虑您的要求。即使您不使用ORM,您也可以通过重复大量代码或使用数据字典来自行完成映射。为什么不使用ORM并知道如何使用它的选项使其几乎快速?权衡利弊,做出选择。

    http://mikehadlow.blogspot.ca/2012/06/when-should-i-use-orm.html

答案 1 :(得分:3)

根据要求,您可能希望选择是否使用ORM。 例如:多个持久性引擎支持(需要在Oracle,DB2,MySQL,SQL Server等上运行),您可能会从ORM获得的抽象中受益,但代价是潜在的应用程序性能丢失。

如果您知道您将仅支持特定的持久性引擎,并且您希望能够利用ORM中可能不支持的持久性引擎中的特定功能,那么......很清楚哪个你应该选择的选择。

另一个因素可能是您提到的开发人员知识以及学习新内容的时间和实际项目时间(硬截止日期等)。这适用于已经了解特定ORM的员工与不了解ORM但在ADO.NET /任何其他低级数据访问技术方面表现优异的员工。