首页 / Prisma ORM 入门教程 / Prisma 是什么:ORM 概念与为什么选择它

Prisma ORM 入门教程

Prisma 是什么:ORM 概念与为什么选择它

本教程共 54 篇 · 第 1 篇 · 更新于 2026-08-11 · 约 5 分钟阅读

PrismaORMschema-firstTypeScript数据库Node.js

本节目标:搞懂 ORM 解决什么问题,Prisma 的三件套分别是什么,以及它和其他数据库工具的根本区别。

为什么需要 ORM

你的应用代码里全是对象和数组。数据库里存的却是表、行、列。两边说的是两种语言,中间需要翻译。

这个翻译工作,就是 ORM(对象关系映射,Object-Relational Mapping)存在的理由。ORM 这个词经常被误解,其实它只是一个统称。写 SQL 字符串、用查询构建器、用模型类映射,都算「和数据库打交道的方式」,只是抽象层级不同。

三种常见方式各有短板:

  • 手写 SQL:用 pgmysql 这类原生驱动。控制力最强,但要自己管理连接、拼接字符串,结果也没有任何类型检查。改一次表结构,所有查询代码跟着改。
  • SQL 查询构建器:Knex 是代表。用链式方法拼 SQL,比字符串强一点,但你仍然得用 SQL 的思维想数据。
  • 传统 ORM:把表映射成类,像 TypeORM 那样。看起来很美好,但类和表之间永远对不齐,这就是著名的「对象关系阻抗不匹配」。用点号遍历关系很方便,背后却可能是昂贵的 JOIN,甚至 N+1 问题。

Prisma 想走的,是第四条路。

Prisma 是什么

Prisma ORM 是开源的「下一代 ORM」,专为 Node.js 和 TypeScript 设计。它不是一个单一工具,而是三件套:

  • Prisma Client(Prisma 客户端):自动生成、类型安全的查询构建器。你的数据模型定义好之后,它帮你生成对应的查询代码。
  • Prisma Migrate:迁移系统。把 Schema 变更变成 SQL 迁移文件,再应用到数据库。
  • Prisma Studio:可视化界面,直接在浏览器里查看和编辑数据。独立版 Studio 闭源,嵌入版(@prisma/studio-core)以 Apache 2.0 开源。

这三件套都围绕一个核心文件工作:schema.prisma。你在这个文件里用 Prisma 的声明式建模语言定义模型,Prisma 再从这份「图纸」生成客户端、生成迁移。官方把这种模式叫做 Schema-first(先 Schema 后代码)。

schema-first 与 code-first

这是 Prisma 和很多传统 ORM 最根本的分歧。

code-first:先用 TypeScript 类或函数定义模型,比如 TypeORM 的装饰器类、Drizzle 的建表函数,再从中推导出数据库结构。模型散落在代码里,想看清全貌要翻很多文件。

schema-first:模型只存在 Schema 文件里,一份文件就是数据库的完整「图纸」。迁移、类型、自动补全都从这份图纸生成。团队成员看一个文件,就知道数据库长什么样。

schema-first 的代价是少了一点灵活性,好处是单一事实来源:不会出现代码和数据库各说各话的情况。

与 Knex、Drizzle、TypeORM 的对比

  • Knex:SQL 查询构建器。你能完全掌控 SQL,但要自己维护表结构、写 JOIN。适合「我就是想写 SQL」的团队。
  • Drizzle:新一代查询构建器,口号是「会 SQL 就会 Drizzle」。API 几乎镜像 SQL,性能好、体积小,但类型安全不完整——查询结果有类型,查询本身写错了编译器不一定拦得住。
  • TypeORM:传统 ORM,用装饰器把类映射成表。模型实例又重又复杂,长期维护成本高。

Prisma 站在另一端:查询 API 是对象式的,findManycreateinclude 这些方法对新手友好;所有查询完全类型安全,字段拼错编译期就报错;关系查询开箱即用,不用手写 JOIN。

v7 的两个里程碑

教程基于 Prisma ORM 7.9.1。v7 有两个大变化,值得一开始就知道:

  • Rust-free:v7.0 起,客户端不再捆绑 Rust 查询引擎。查询编译器以 WASM 跑在 JS 主线程,包体积显著更小(官方发布说明称约 90%),查询更快。
  • ESM-only:Prisma 以 ES Module 形式发布,项目需要 "type": "module"。CommonJS 的 require 写法在 v7 走不通。

还有一个边界要记住:MongoDB 在 v7 暂不支持,用 MongoDB 的项目请留在 v6.19。

什么时候选 Prisma

适合的场景:团队协作、重视类型安全、不想每个人都是 SQL 专家、需要迁移工具链。不适合的场景:需要完全掌控每一条 SQL、或只想生成一个开箱即用的后端服务。

Note

选型没有绝对正确。Prisma 牺牲一部分 SQL 控制力,换来生产力和安全。真需要精细 SQL 时,Prisma 也保留了原始查询(Raw Query)的出口,这个后面章节会讲。

参考来源

  • Prisma 官方文档:What is Prisma?、Why Prisma?、Should you use Prisma?(Introduction 系列,中文版)
  • Prisma 官方文档:Prisma vs Drizzle、Prisma vs TypeORM(Comparisons)
  • 英文教程:Better Stack 社区 - Drizzle vs Prisma 对比、Knex vs Prisma 对比