プログラミングHUB
language6分で読めます

Prisma ORM入門|型安全なデータベース操作をNode.jsで実現する

Prisma ORMの基礎を初心者向けに解説。スキーマ定義、マイグレーション、CRUD操作、リレーションの扱い方を実例付きで紹介します。

関連記事:データベース設計入門

Prisma ORMは、Node.js / TypeScript向けの次世代ORMです。スキーマファイルからTypeScriptの型を自動生成し、型安全なデータベース操作ができるのが最大の特徴です。

Prismaの特徴

  • 型安全:スキーマから自動生成されたクライアントで、型の不一致をコンパイル時に検出
  • 直感的なAPI:SQLを書かずにリレーションを含む複雑なクエリが可能
  • マイグレーション管理:スキーマの変更履歴をコードで管理
  • 対応データベース:PostgreSQL、MySQL、SQLite、MongoDB など

セットアップ

npm install prisma @prisma/client
npx prisma init

スキーマ定義

prisma/schema.prisma にデータモデルを定義します。

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
  createdAt DateTime @default(now())
}

マイグレーション

# マイグレーションの作成・実行
npx prisma migrate dev --name init

# クライアントの再生成
npx prisma generate

CRUD操作

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

// Create
const user = await prisma.user.create({
  data: {
    email: '[email protected]',
    name: 'テスト太郎',
  },
});

// Read
const users = await prisma.user.findMany({
  where: { name: { contains: '太郎' } },
  orderBy: { createdAt: 'desc' },
});

// Update
const updated = await prisma.user.update({
  where: { id: 1 },
  data: { name: '新しい名前' },
});

// Delete
await prisma.user.delete({
  where: { id: 1 },
});

リレーションを含むクエリ

// ユーザーと投稿を同時に取得
const userWithPosts = await prisma.user.findUnique({
  where: { id: 1 },
  include: { posts: true },
});

// ネストした作成
const userWithPost = await prisma.user.create({
  data: {
    email: '[email protected]',
    name: '著者',
    posts: {
      create: {
        title: '最初の投稿',
        content: 'Prismaで作成しました',
      },
    },
  },
  include: { posts: true },
});

Prisma Studio

GUIでデータベースの中身を確認・編集できるツールです。

npx prisma studio

ブラウザが開き、テーブルの内容をスプレッドシートのように操作できます。開発時のデバッグに便利です。

Prismaが向いている場面

  • TypeScriptプロジェクトで型安全を重視する場合
  • Next.jsExpressでのAPI開発

Next.js入門も参考にしてください。

  • スキーマファーストで開発したい場合
  • チームでの開発でマイグレーション管理が必要な場合

他のORMとの比較

項目PrismaTypeORMSequelize
型安全自動生成デコレータ手動定義
学習コスト低い中程度中程度
スキーマ定義独自DSLTypeScriptJavaScript
マイグレーション標準搭載標準搭載標準搭載
PR楽天ブックス プログラミング書籍楽天ブックスでプログラミング入門書を探す公式サイトで詳細を見る※本コンテンツはアフィリエイト広告を含みます。表示内容は各社公式サイトをご確認ください。

まとめ

Prismaは、TypeScriptとの相性が非常に良いORMです。スキーマ定義から型が自動生成されるため、データベース操作のミスをコンパイル時に防げます。Next.jsやExpressと組み合わせて、まず小さなCRUDアプリから試してみましょう。


あわせて読みたい

あなたに合う次の選び方を見る

30秒で診断してみる
#Prisma#ORM#Node.js#TypeScript#データベース

関連記事