arrow_back返回文章列表
技術

第 1 篇:Prisma 是什麼?

如果你寫過後端,一定遇過這些問題:SQL 散落各處、欄位名稱與型別全靠記憶、資料表結構一改就心驚膽跳。Prisma 想解決的,正是這些痛點——提供一個強型別、現代化、可維護的資料存取層。


1. Prisma 是什麼?

一句話總結:

Prisma 是面向 TypeScript / JavaScript 的現代 ORM 與資料存取工具鏈。

它的核心目標是:

傳統 ORM 強調「物件 ↔ 資料表」的映射;
而 Prisma 更像是在說:

用宣告式 DSL 定義你的資料世界,其餘交給工具鏈處理一致性與安全性。

目前 Prisma 主要運行於:


2. Prisma 的三大核心元件

理解 Prisma,本質上就是掌握三個核心:

2.1 Prisma Schema:單一真相來源(SSOT)

Schema(預設 prisma/schema.prisma)用 DSL 描述:

這個檔案就是:

Single Source of Truth(單一真相來源)

你不再需要手寫 SQL 建表,Schema 變更 → Prisma 自動推導資料庫變更。


2.2 Prisma Client:型別安全的資料存取 API

Prisma Client 是由 Schema 自動生成的 TypeScript/JS 程式碼:

它知道:

範例:

const user = await prisma.user.findUnique({
  where: { id: 1 },
})

優勢:


2.3 Prisma Migrate:資料庫演進管理

Prisma Migrate 負責:

優勢:


3. 支援的資料庫

Prisma 支援:

此外還有:

Prisma Postgres(官方託管服務)


4. 核心理念:型別安全 + 開發體驗(DX)

4.1 型別安全(Type-safe)

Prisma 的型別安全來自:

相比傳統方式:


4.2 DX 優先

Prisma 提供完整工具鏈:

CLI

Prisma Studio

VS Code 插件


5. 在系統架構中的角色

Prisma 位於:

業務邏輯層 ↔ 資料庫之間

典型分層:

Prisma Client 可視為「超級 DAO」,
但大型專案仍建議包一層 Repository 以隔離依賴。


6. 與傳統 ORM 相比,Prisma 有哪些不同?

如果你使用過 Sequelize、TypeORM 或 Java 生態中的 Hibernate,大概會關心:Prisma 和它們在本質上有什麼差異?

可以從以下幾個維度簡單對比:

維度

傳統 ORM(如 Sequelize / TypeORM)

Prisma

模型定義方式

程式碼註解 / JS 物件 / class

獨立的 Schema DSL 檔案

型別安全

依賴手動維護 TS 型別

由 Schema 自動生成 Client 型別

遷移管理

內建或外掛式遷移,偏腳本導向

Schema 驅動遷移,SQL 檔案清晰可追蹤

查詢 API 風格

類似 ActiveRecord 或 Query Builder

函數式、鏈式、強型別的 where / include

多語言支援

通常只針對單一語言

專注於 JS / TS 生態

心智模型

「物件 ↔ 資料表」映射

「Schema 驅動的資料存取層」

你可以把 Prisma 理解為:

專為 JS / TS 打造的「更現代、更具型別安全的 ORM 2.0」。


7. 生產環境最佳實踐(CI/CD)

核心原則:

開發 vs 生產

👉 生產禁止使用:


CI/CD 整合

- name: Run Prisma migrations
  run: npx prisma migrate deploy

流程:

  1. 拉程式碼

  2. 安裝依賴

  3. 執行 migration

  4. 部署應用


環境變數管理


Migration 管理


Prisma Postgres(進階)


8. 小結

關鍵觀念: