第2个回答 2021-03-31
当我们在写和数据有关的软件时,你可能已经用到了(Object Relational Mapper)ORM 框架。大部分的现代化的编程语言其实已经包括了ORM框架,很多时候不需要我们自己再重新设计ORM框架了。但是如果你想深入的了解自己的数据或者想要在自己的程序中加入一些特别的设计。还是很有必要研究下ORM框架的原理。
Active Record 和 Data Mapper可能是最受欢迎的两种ORM结构。他们各自有各自的优缺点。
什么是ORM
第一步我们先了解下为什么我们需要使用ORM。简单的来说ORM相当于一个介于数据库和软件之间的一个中继数据层。在面向对象程序设计(object oriented programming)之中,程序员主要关心的是每个对象(object)。
下面是一个对象(object)的例子
$user = new user;
$user->name = 'ou';
但是像mysql这类的数据库只能储存字符串(string)或者数字(integers)
每个user在程序中可能有很多信息交互,例如文章,动态,心情。我们可以用下面的代码来接入。
$posts =$user->posts;
但是在数据库中是像这样储存的
所以当我在程序中面对对象(object)时,单一对象其实包括了其所有的内容(properties)和关系(relationship)。但是所有数据库中的数据是一个单一的值,而且分开储存在不同的表(table)中。Orm就是一个中继器可以把把单一对象的所有信息转移到相关的数据库中。
什么是Active Record?
Active Record 可以说是现在最受欢迎的一种ORM结构。如果你常常使用Ruby之类的语言,可能你已经对Active Record有一定l。下面是一个简单的Active Record例子。
$user = new user;
$user->username = 'ou';
$user->save();
在上面的代码中,我创造了一个新的对象user,把user的username设置为‘ou'。然后保存到了数据库中。
Active Record 的ORM框架会把对象(object)保存为数据库的一行(row),所以上面这个例子中user对象(object)被放入了数据库中的一行(row)。如果你使用Active Record你也不需要定义对象(object)的内容以及其和数据库的关系,因为model会自动匹配数据库的模式。同时你也只需要在对象(object)调用save()方程来升级数据库。本回答被网友采纳