ORM和ODM有什么区别?

时间:2012-09-04 10:45:37

标签: database orm odm

我试图找出ORM和ODM之间的区别,据我所知,ORM(Object Relational Mapper)映射数据之间的关系,ODM(Object Document Mapper)处理文档。我是否正确假设mySQL是ORM的一个例子而MongoDB是ODM的一个例子?

我相信你可以看到,我对这个概念的理论并不太熟悉。有人可以澄清两者之间的差异吗?

5 个答案:

答案 0 :(得分:151)

MySQL是关系数据库的一个示例 - 您可以使用ORM在代码中的对象和数据的关系表示之间进行转换。

ORM的示例有nHibernateEntity FrameworkDapper等......

MongoDB是文档数据库的一个示例 - 您可以使用ODM在代码中的对象和数据的文档表示(如果需要)之间进行转换。

Mandango是MongoDB的ODM示例。

答案 1 :(得分:25)

对象模型和关系数据库之间的ORM映射。对象模型和文档数据库之间的ODM映射。 MySQL不是ORM,它是一个关系数据库,更具体地说是一个SQL数据库。 MongoDB不是ODM,它是文档数据库。

答案 2 :(得分:8)

从本质上讲,ORM使用SQL数据库驱动程序(如ODBC,JDBC或OLEDB)将对象表示法转换为关系表示法,ODM使用JSON或JSONB api将对象表示法转换为文档表示法。

幕后有不同类型的实现。

PS:JSONB是一种以MongoDB使用的二进制格式存储的JSON文本文档符号。

答案 3 :(得分:0)

Mongoose是MongoDB ODM(对象数据模型)的一个很好的例子,您可以在其中直接对对象执行操作,然后将其转换为适当的查询和模式。 可以在这里https://mongoosejs.com/

中找到

答案 4 :(得分:0)

当您第一次学习如何使用数据库时,所有这些都归结为两种数据库设置类型:ORM(对象关系映射)和ODM(对象文档映射)

ORM将对象与关系世界映射在一起,它基本上在面向对象的编程语言中在不兼容类型之间转换数据。 ORM将存储驱动程序的实现特定细节包装在API(应用程序接口)中,并将关系字段映射到对象成员。例如,如果我有一个雇员表,则将其映射到所有雇员的单个对象,并使用与之相关的各种方法。

另一方面,ODM是对象文档映射器,它使用文档数据库(如MongoDB)映射对象。

主要区别在于ORM用于MySQL数据库,而ODM则用于数据文档表示的映射。 记住ORM的最佳方法是将其视为具有行和列的Excel电子表格。使用此设置时,您要确保对如何处理当前应用程序有一个很好的计划,它不允许像ODM那样进行许多修改。使用ODM,我们可以轻松地添加新的字段和属性,但是使用ORM时,添加新字段时,您需要记住,没有什么是空的,因此除非您想进入每个字段并进行修改,否则它都需要一个默认值。