ORM和ODBC有什么区别?

时间:2014-06-11 00:49:32

标签: orm odbc

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

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

例如,LIQN属于哪一个? ODBC是ORM的实现吗?

3 个答案:

答案 0 :(得分:4)

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

开放式数据库连接是与数据库通信的规范。这是'语言'客户端和数据库将在其中进行通信。

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

有大量的视频,博客和课程。

ODBC Overview

ORM Overview

答案 1 :(得分:2)

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

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

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

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

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

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

答案 2 :(得分:0)

区别在于:

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

      

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

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

      

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

<强>参考