【问题标题】:What's difference between ORM and ODBC?ORM 和 ODBC 有什么区别?
【发布时间】:2014-06-11 00:49:31
【问题描述】:

ORM(对象关系映射)
它看起来像一个模型,将关系型数据库(如 MySQL)的操作封装为对象,并提供程序化方法(例如 object.getMax())在程序中操作数据库。

ODBC(开放式数据库连接)
它似乎是不同数据库之间的连接器。

比如LIQN,属于哪一种? ODBC 是 ORM 的实现吗?

【问题讨论】:

    标签: orm odbc


    【解决方案1】:

    这是两个非常大的东西,但我会给你一个粗略的概述......

    开放式数据库连接是一种与数据库对话的规范。这是您的客户和数据库将要使用的“语言”。

    ORM 是一个由很多工具实现的概念。这是一个将对象映射到关系数据库的概念,以便您在面向对象的代码中与您的数据库进行对话。 LINQ to SQL 是一个 ORM 的实现。它可能会使用 ODBC 类型的连接来执行对象和数据库之间的连接。

    有大量关于此的视频、博客和课程。

    ODBC Overview

    ORM Overview

    【讨论】:

      【解决方案2】:

      ORM 是一种将类和对象映射到关系表的技术(在抽象意义上)。例如,在没有 ORM 的情况下,如果您执行 SQL 查询,您将获得一个包含表行的结果集,并且在这些行中包含列。无论您是查询汽车还是人员,结果集的格式始终相同。使用 ORM,您的程序可以获取 CarPerson 类的实例,以供使用。

      ODBC 是一个中间件 API,它统一了对各种数据源的访问。它试图消除协议之间的差异,以便您的代码可以连接到许多不同的引擎,而不必担心每个协议使用哪个协议。

      LINQ 是一种查询语言。一些 LINQ 提供者将是 ORM,而一些可能通过 ODBC 访问数据库;但这三个都是不同的概念。

      您可以在 LINQ 中编写查询,它的提供者可以通过 ODBC API 访问数据库,并将结果作为 ORM 返回给您(即将结果映射到表示数据库记录的对象)。

      这些步骤中的每一个都可以用一个更基本的步骤代替:你可以用 SQL 的 PostgreSQL 方言编写查询;使用 PostgreSQL 特定协议通过 PostgreSQL 驱动程序访问数据库;并将数据作为包含特定数量的列的行集合返回。

      或者您可以做任何组合:通过 ODBC 访问但获取行/列;在直接的专有协议连接上使用 ORM。

      【讨论】:

        【解决方案3】:

        区别在于:

        • ODBC 将记录集作为元组返回

          创建一个新的命令 dbhandle 用于进一步操作数据库

        • ORM 将记录集作为对象返回

          自省数据库以发现其主键和外键关系以建立表类之间的交叉链接

        参考文献

        【讨论】:

          猜你喜欢
          • 2018-06-25
          • 1970-01-01
          • 1970-01-01
          • 2017-03-23
          • 2018-09-05
          • 2012-08-29
          • 2017-09-04
          • 2016-11-28
          • 2010-11-04
          相关资源
          最近更新 更多