orm - 使用 ORM 的优缺点

标签 orm

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




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

好处:

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

  • 缺点:
  • 开发人员在学习使用 ORM 编程时生产力下降。
  • 开发人员无法理解代码实际在做什么 - 开发人员可以更好地控制使用 SQL。
  • ORM 有缓慢的趋势。
  • ORM 无法与 SQL 查询竞争复杂查询。

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

    人们可以指出我哪里出错并提出任何进一步的优点/缺点。

    最佳答案

    "ORM fail to compete against SQL queries for complex queries."


  • LINQ-SQL 和 Entity Framework 都允许复杂的查询,甚至可以将 SQL 查询结果转换为对象。

  • "Developers loose understanding of what the code is actually doing - the developer is more in control using SQL."


  • 不是真的,如果你知道你在做什么。 SQL 分析器足以查看翻译的 SQL 查询是什么。

  • "ORM has a tendency to be slow."


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

  • "Loss in developer productivity whilst they learn to program with ORM."


  • Hibernate 和 Entity Framework 可能需要时间来学习,但从长远来看,它们将节省开发时间。另一方面,LINQ-SQL 几乎不涉及学习曲线。

  • 我说,使用 ORM 但请记住这一点。
  • 设计查询并编写代码
    这将导致最少的数字
    与服务器的往返次数。它是
    往返的开销
    这需要时间。
  • 阅读其他体验
    人们已经与选定的
    ORM 在你深入挖掘之前。
  • 始终将您的查询与
    实际在 SQL 中执行的
    服务器分析器。

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

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

    关于orm - 使用 ORM 的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4667906/

    相关文章:

    php - 如何在 Laravel Eloquent 中使用带有子查询的内连接

    python - SQLAlchemy - ObjectDeletedError : Instance '<Class at...>' has been deleted. 帮助

    java - 使用 netbeans 从 pojo 和 hibernate 创建 mysql 模式

    orm - SQLAlchemy ORM 插入前钩子(Hook)

    database - 如何在Intershop7.9中为自定义对象创建数据库表

    java - 模型(在 MVC 中)和 DAO 应该如何交互?

    c# - SubSonic 3 简单存储库问题

    python - 如何在 SQLAlchemy 中进行多级预加载?

    java - JPA + 如何使用第三个表作为一对多关系中的联接来选择记录?

    javascript - 查询中不等于的 Waterline ORM (sails.js) 条件