一、这个技术是什么?
直接手写 SQL 很灵活,但在大型项目中容易出现字符串拼接、类型不一致和重复查询代码。ORM 让开发者可以用程序语言中的对象和方法操作数据库,同时生成或执行 SQL。
它解决的是“如何让应用代码和数据库结构更容易协作”的问题,但 ORM 不是数据库,也不能替代 SQL 原理。
二、没有它之前发生了什么?
所有 SQL 都手写在业务代码中
↓
重复查询、类型错误和注入风险增加
↓
开发者尝试用对象封装数据库操作
↓
ORM 提供模型、查询、迁移和类型能力
三、核心概念
1. Model
Model 用程序代码描述数据库中的实体和字段。
2. Query API
Query API 让应用使用方法或对象表达查询条件,但最终仍然需要数据库执行 SQL。
3. Migration
Migration 记录数据库结构如何从一个版本变化到另一个版本。
4. Transaction
ORM 通常提供事务 API,但开发者仍然必须理解事务边界和并发风险。
5. N+1 Query
先查询一批记录,再为每条记录单独查询关联数据,会产生大量重复请求。
四、运行流程
五、面试复习
一句话回答
ORM 把程序中的模型和数据库表连接起来,提供类型安全、查询封装和迁移能力,但复杂查询、性能问题和数据库原理仍然需要直接理解 SQL。
高频追问
- ORM 会不会消灭 SQL?
- Prisma 和 Drizzle 如何选择?
- 什么是 N+1 查询?
- Migration 和直接修改数据库有什么区别?
容易答错
不要说 ORM 一定比手写 SQL 更快或更安全。最终性能和安全性取决于生成的 SQL、参数绑定、索引和使用方式。
六、项目展示
知识平台可以用 ORM 读写学习进度和收藏,但 Markdown 正文仍由内容 loader 读取。这样展示内容的路径保持静态,用户数据又能使用事务和权限控制。