有人建议我将ORM用于我正在设计的项目,但我无法找到有关它是什么或如何工作的信息。任何人都可以给我一个简短的解释或链接,我可以在哪里了解更多信息吗?
答案 0 :(得分:480)
Object-Relational Mapping(ORM)是一种允许您使用面向对象的范例从数据库查询和操作数据的技术。在谈论ORM时,大多数人都指的是实现对象关系映射技术的库,因此使用短语“an ORM”。
ORM库是一个用您选择的语言编写的完全普通的库,它封装了操作数据所需的代码,因此您不再使用SQL了。您可以使用与您正在使用的语言相同的对象直接进行交互。
例如,这是一个完全虚构的伪语言案例:
你有一本书类,你想要检索作者是“Linus”的所有书籍。手动,你会做那样的事情:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
使用ORM库,它看起来像这样:
book_list = BookTable.query(author="Linus");
机械部件通过ORM库自动处理。
使用ORM会节省大量时间,因为:
使用ORM库更加灵活,因为:
但是ORM可能很痛苦:
for
循环中的重击一样。好吧,使用一个。无论您选择哪个ORM库,它们都使用相同的原则。这里有很多ORM库:
如果你想在Web编程中尝试一个ORM库,你最好使用整个框架堆栈,如:
除非您尝试学习某些东西,否则不要尝试编写自己的ORM。这是一项巨大的工作,旧的工作需要花费大量的时间和工作才能变得可靠。
答案 1 :(得分:50)
任何人都可以给我一个简短的解释......
不确定
ORM代表“对象到关系映射”,其中
对象部分是您使用编程语言的部分(本例中为python)
Relational 部分是一个关系数据库管理器系统(一个数据库),还有其他类型的数据库,但最受欢迎的是关系型(你知道表,列,pk fk等例如Oracle MySQL,MS-SQL)
最后,映射部分是您在对象和表之间建立桥梁的地方。
在不使用ORM框架的应用程序中,您可以手动执行此操作。使用ORM框架可以减少创建解决方案所需的样板。
所以,假设你有这个对象。
class Employee:
def __init__( self, name ):
self.__name = name
def getName( self ):
return self.__name
#etc.
和表格
create table employee(
name varcar(10),
-- etc
)
使用ORM框架将允许您自动将该对象与db记录映射并编写如下内容:
emp = Employee("Ryan")
orm.save( emp )
让员工插入数据库。
哎呀它不是那么简短,但我希望它能够很容易地抓住你读过的其他文章。
答案 2 :(得分:17)
ORM(对象关系映射器)是一个软件层/层,可帮助将代码对象映射到数据库。
有些人处理的方面比其他方面更多......但目的是将数据层的一些重量从开发人员的肩膀上移开。
以下是Martin Fowler(数据映射器)的简短剪辑:
Patterns of Enterprise Application Architecture Data Mappers
答案 3 :(得分:4)
与所有首字母缩略词一样,它含糊不清,但我认为它们的意思是object-relational mapper - 一种遮住眼睛的方式,并且相信它下面没有SQL,而是它的所有对象;-)。当然不是真的,也不是没有问题 - 总是色彩鲜艳的杰夫阿特伍德将ORM描述为the Vietnam of CS ;-)。但是,如果您知道很少或没有SQL,并且有一个非常简单/小规模的问题,它们可以节省您的时间! - )
答案 4 :(得分:2)
这是一个很大的话题。拿起一本好的冬眠书,它应该在获得细节之前详细解释ORM。
答案 5 :(得分:2)
Storm是一个不错的选择。
答案 6 :(得分:2)
对象模型涉及以下三个概念 数据抽象 封装 遗产 关系模型使用了关系或表的基本概念。 对象关系映射(OR映射)产品将对象编程语言功能与关系数据库集成在一起。
答案 7 :(得分:1)
DALMP http://code.google.com/p/dalmp/可能是一个很好的php / mysql目前支持许多缓存后端,如redis / memcache / apc