使用ORM的优点和缺点

使用ORM的优点和缺点,orm,Orm,我想讨论一下使用ORM(如ADO.NET)的优缺点 优势: 加快开发—消除了重复SQL代码的需要 缩短开发时间 降低开发成本 克服了特定于供应商的SQL差异——ORM知道如何编写特定于供应商的SQL,因此您不必这样做 缺点: 当开发人员学习使用ORM编程时,他们的生产力会下降 开发人员无法理解代码实际在做什么-开发人员使用SQL更能控制 ORM有缓慢的趋势 ORM无法与SQL查询竞争复杂查询 总之,我认为使用ORM的优点(主要是减少执行重复性任务所需的时间)远远大于ORM的缺点,例如,难

我想讨论一下使用ORM(如ADO.NET)的优缺点

优势:
  • 加快开发—消除了重复SQL代码的需要
  • 缩短开发时间
  • 降低开发成本
  • 克服了特定于供应商的SQL差异——ORM知道如何编写特定于供应商的SQL,因此您不必这样做
缺点:
  • 当开发人员学习使用ORM编程时,他们的生产力会下降
  • 开发人员无法理解代码实际在做什么-开发人员使用SQL更能控制
  • ORM有缓慢的趋势
  • ORM无法与SQL查询竞争复杂查询
总之,我认为使用ORM的优点(主要是减少执行重复性任务所需的时间)远远大于ORM的缺点,例如,难以掌握


人们能指出我的错误所在并提出进一步的优点/缺点吗

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

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

另一个因素可能是您提到的开发人员知识、学习新东西的时间和实际项目时间(硬期限等)。这适用于已经了解特定ORM的员工和不了解ORM但擅长ADO.NET/任何其他较低级别数据访问技术的员工

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

  • LINQ-SQL和实体框架都允许复杂的查询,甚至可以将SQL查询结果转换为对象
“开发人员对 代码实际上在做什么- 开发人员使用 SQL。”

  • 如果你知道自己在做什么的话,也不一定。SQL探查器足以查看已翻译的SQL查询是什么
“ORM有缓慢的趋势。”

  • 是的,但是延迟加载和一些智能选项可以使它几乎一样快
“开发人员生产力损失 他们学习使用ORM编程。”

  • Hibernate和实体框架可能需要时间学习,但从长远来看,它们将节省开发时间。另一方面,LINQ-SQL几乎不涉及学习曲线
我说,使用ORM,但要记住这一点

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

  • 了解其他人的经历 人们对被选中的人已经产生了兴趣 在你挖得太深之前

  • 始终将您的查询与 SQL中正在执行的实际操作 服务器分析器

  • 编辑: 对于性能关键的情况,您不会使用ORM,就像您不会使用.Net或Java编写操作系统一样。在选择之前考虑你的要求。即使您不使用ORM,您最终也会通过重复大量代码或使用数据字典自己进行一些映射。为什么不使用ORM,并知道如何使用它的选项,使它几乎一样快?权衡利弊,做出选择


    ADO.NET本身并不是一个“ORM”。“我们希望答案能得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或广泛讨论。”没有前者,就无法解决后者。如果您认为某个问题将引发辩论、争论、投票或广泛讨论,那么是否应首先证明该问题的任何答案必然缺乏事实、参考资料和专业知识?举证责任在问题的最后一方。关于“始终将您的查询与正在执行的实际查询进行比较”,这首先违背了使用ORM的全部目的。不,事实并非如此。ORM的目的不仅仅是进行查询。您必须检查查询以查看它们是否转换为最有效的形式,或者根据需要调整ORM查询。大多数ORM还支持直接将SQL查询结果转换为实体。除非是一个非常简单的项目,否则不要期望不懂SQL,也不要在ORM中使用CRUD。事实上,这就是ORM的全部目的:用于任何地方都没有瓶颈的非常简单的项目。当你到了“你必须检查查询,看看它们是否转换为最有效的形式,或者根据需要调整你的ORM查询”的地步时,它首先破坏了使用ORM的全部目的,因为使用ORM的目的就是要避免这一点。你不能为一个已经结束的问题添加答案。是的,再次回到ORM,ORM只用于破解一些不需要任何db性能的简单应用程序。你对“大”和“db重”的定义需要修改。请给我举几个使用ORM解决持久需求的大型数据库密集型项目。是的,ORM的全部目的是根本不涉及查询。所以你会问“为什么ORM支持通过SQL查询”。事实上,这正是我从一开始就说的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。‌​....................................................................第一句话,是的,你开始明白了。这还不够明显吗?我想这不是因为人们太深陷ORM,所以