我试图找出ORM和ODM之间的区别,据我所知,ORM(Object Relational Mapper)映射数据之间的关系,ODM(Object Document Mapper)处理文档。我是否正确假设mySQL是ORM的一个例子而MongoDB是ODM的一个例子?
我相信你可以看到,我对这个概念的理论并不太熟悉。有人可以澄清两者之间的差异吗?
答案 0 :(得分:151)
MySQL是关系数据库的一个示例 - 您可以使用ORM在代码中的对象和数据的关系表示之间进行转换。
ORM的示例有nHibernate,Entity Framework,Dapper等......
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时,添加新字段时,您需要记住,没有什么是空的,因此除非您想进入每个字段并进行修改,否则它都需要一个默认值。