长期不定期更新,建议关注收藏点赞。
概述
- ORM(Object-Relational Mapping,对象关系映射):面向关系型数据库,ORM将对象映射到数据库的表和行(例如MySQL、PostgreSQL)。
- ODM(Object Data Mapping,对象数据映射):面向非关系型数据库,ODM将对象映射到文档型数据库(例如MongoDB)的文档。
- 如果你用的是 MongoDB ➜ 选择 ODM(Mongoose)
如果你用的是 MySQL / PostgreSQL ➜ 选择 ORM(Prisma、Sequelize)
- 对比
特性 |
ORM |
ODM |
数据库类型 |
关系型 |
文档型(NoSQL) |
数据结构 |
表格 |
JSON 文档 |
适合场景 |
严格结构、复杂关系 |
灵活结构、快速迭代 |
常用工具 |
Sequelize, Prisma, TypeORM |
Mongoose |
学习曲线 |
相对复杂(SQL) |
相对简单(更贴近 JS) |
ORM
项目 |
内容 |
全称 |
Object-Relational Mapping |
适用数据库 |
关系型数据库(如 MySQL、PostgreSQL、SQLite) |
数据结构 |
表(Tables)、行(Rows)、列(Columns) |
常用 Node.js 框架 |
Sequelize、TypeORM、Prisma |
使用场景 |
使用结构化数据、有复杂关系(如一对多、多对多)的场景 |
ODM
项目 |
内容 |
全称 |
Object-Document Mapping |
适用数据库 |
文档型数据库(如 MongoDB) |
数据结构 |
文档(Document),类 JSON 结构 |
常用 Node.js 框架 |
Mongoose |
使用场景 |
非结构化数据、灵活 schema、嵌套对象较多的场景 |
ODM(Object Data Mapping,对象数据映射)是指将应用程序中的对象(通常是面向对象编程语言中的对象)映射到数据库中的数据记录(尤其是文档型数据库)。ODM是ORM(Object-Relational Mapping,对象关系映射)的一种扩展,专门用于对象和非关系型数据库(如MongoDB)之间的映射。
- ODM的基本概念:
对象:应用程序中的数据结构,通常是一个类或实例,代表业务数据(如用户、订单、商品等)。
数据:存储在数据库中的数据记录,例如MongoDB中的文档。
映射:ODM通过将应用程序对象的属性和数据库记录之间建立映射关系,实现对象和数据之间的转换。
- ODM的作用:
提供高层抽象,简化了与数据库的交互。开发者可以像操作对象一样操作数据库。
处理对象和数据库之间的数据转换,开发者不需要关心底层的SQL查询和数据存取方式。
提供更方便的查询接口,使得文档型数据库的操作更符合面向对象编程习惯。