Orm 什么是对象关系映射框架?

Orm 什么是对象关系映射框架?,orm,Orm,正如标题所说;什么是ORM框架?它对什么有用?: 对象关系映射(ORM、O/RM、, 和O/R映射)在计算机软件中 是一种编程技术 在不兼容的数据库之间转换数据 关系数据库中的类型系统 面向对象程序设计 语言。这实际上创造了一个 “虚拟对象数据库”可以 从编程内部使用 语言。既有免费的,也有免费的 提供的商业软件包 执行对象关系映射, 尽管有些程序员选择 创建自己的ORM工具 它有助于将数据存储(平面文件/SQL/which)抽象出来,以便提供可在代码中使用的接口。例如,(在rails中)我们可

正如标题所说;什么是ORM框架?它对什么有用?

:

对象关系映射(ORM、O/RM、, 和O/R映射)在计算机软件中 是一种编程技术 在不兼容的数据库之间转换数据 关系数据库中的类型系统 面向对象程序设计 语言。这实际上创造了一个 “虚拟对象数据库”可以 从编程内部使用 语言。既有免费的,也有免费的 提供的商业软件包 执行对象关系映射, 尽管有些程序员选择 创建自己的ORM工具

它有助于将数据存储(平面文件/SQL/which)抽象出来,以便提供可在代码中使用的接口。例如,(在rails中)我们可以这样做,而不是构造SQL来查找users表中的第一个用户:

User.first
Person p = Person.Get(Person.Properties.Id == 10);
这将返回一个用户模型的实例,其中包含用户表中第一个用户的属性。

来自Wikipedia:

计算机软件中的对象关系映射(ORM、O/RM和O/R映射)是一种编程技术,用于在关系数据库和面向对象编程语言中的不兼容类型系统之间转换数据。这实际上创建了一个“虚拟对象数据库”,可以在编程语言中使用。虽然有些程序员选择创建自己的ORM工具,但可以使用免费和商业软件包来执行对象关系映射

利弊 ORM通常会减少需要编写的代码量,使软件更加健壮(程序中的代码行越少,其中包含的错误就越少)。[1]


使用O/R映射既有成本,也有好处。例如,一些O/R映射工具在大容量删除数据时表现不佳。存储过程可能具有更好的性能,但不可移植。

一个简单的答案是,您可以用编程语言将表或存储过程封装在类中,这样就不用编写SQL语句来与数据库交互,而是使用对象的方法和属性

换句话说,不是像这样的事情:

String sql = "SELECT ... FROM persons WHERE id = 10"
DbCommand cmd = new DbCommand(connection, sql);
Result res = cmd.Execute();
String name = res[0]["FIRST_NAME"];
Person p = repository.GetPerson(10);
String name = p.FirstName;
你可以这样做:

String sql = "SELECT ... FROM persons WHERE id = 10"
DbCommand cmd = new DbCommand(connection, sql);
Result res = cmd.Execute();
String name = res[0]["FIRST_NAME"];
Person p = repository.GetPerson(10);
String name = p.FirstName;
或者类似的代码(这里有很多变体)。一些框架还将大量代码作为类本身的静态方法放入,这意味着您可以执行类似的操作:

Person p = Person.Get(10);
有些还实现了复杂的查询系统,因此您可以执行以下操作:

User.first
Person p = Person.Get(Person.Properties.Id == 10);
框架使这段代码成为可能

现在是福利。首先,将SQL隐藏在逻辑代码之外。这样做的好处是可以更轻松地支持更多的数据库引擎。例如,MS SQL Server和Oracle在典型函数上的名称不同,计算日期的方法也不同,因此“让我了解过去24小时内编辑的所有人员”的查询可能仅针对这两个数据库引擎就需要不同的SQL语法。这种差异可以从逻辑代码中消除


此外,您可以专注于编写逻辑,而不是正确地编写SQL。代码通常也更具可读性,因为它不包含与数据库对话所需的所有“管道”。

它允许您执行类似的操作(这是条令代码):

是:


一种抽象,就像任何抽象一样,它使您的生活更轻松。

数据库通常使用关系模型:您有表(简化:像电子表格),以及它们之间的关系-一对一、一对多、多对多,等等,例如,表A中的一条记录在表B中有许多相关记录。您可以从这些记录中检索数据作为行(表示表中的行的值的集合)

现代编程语言使用对象模型。对象具有方法、属性(简单或复杂)等

ORM软件在这些模型之间进行转换。例如,它将表B中的所有相关记录放入对象A的一个属性中。这种软件使使用对象编程语言的关系数据库(最流行的一种)变得更容易。

对象关系映射(ORM)库提供了数据库表到域对象类的映射。

无论何时使用ORM(对象关系映射器),您都会发现DBAL(数据库抽象层)并排出现。因此,有必要了解这些是什么,以便更好地了解您正在使用的产品以及您将获得的优势

DBAL(数据库抽象层)

它充当代码和数据库之间的一层。无论您的数据库是什么,只要稍加调整,编写的代码都可以正常工作

假设对于当前的项目,一旦MySQL完全成熟并获得巨大流量,您的团队计划出于某种原因将数据库切换到Oracle,那么您在MySQL中编写的代码必须重写为基于Oracle的查询。重写整个项目的查询是一项乏味的任务

相反,如果您使用任何DBAL库,那么您可以切换数据库的配置,并确保您的项目将在一天内启动并运行(可能需要一些小的调整)

ORM(对象关系映射器)

对象关系映射(ORM)是一种从面向对象语言访问关系数据库的技术(设计模式)

如果您使用过Symfony(如果您来自PHP背景)/Hibernate(Java)等任何类型的框架,那么您应该熟悉这些框架。它只不过是实体

为了在面向对象的上下文中访问数据库,并且需要转换对象逻辑的接口,该接口称为ORM。它由对象组成,这些对象提供对数据的访问并将业务规则保存在自己的内部

例如

例如,

我希望,维基百科什么时候会