Prisma とは

データベースをJS/TSから方安全に操作できるORM。schemaからDB構造と操作用のAPIを自動生成するのが特徴。

ORM(Object Relational Mapping)

データベース操作をオブジェクト指向型言語のやり方で扱えるようにするための手法。

ORMを使用するメリット

  • SQLを書かずJS/TSで完結できる
  • 型安全
  • 可読性が高い
  • DBに依存しないコードが書ける(DBを変更しやすくなる)

触ってみる

インストール

npm install prisma --save-dev
npm install @prisma/client // インストールする

npx prisma init // 初期化する

下記ファイルができる

prisma/
 └─ schema.prisma

.env

schema.prismaは下記の通りに修正。

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

datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  createdAt DateTime @default(now())
}

schema.prismaがやっている仕事

DB接続情報を書く(datasource)

  • どのDBを使うか(PostgreSQL / MySQL / SQLite など)
  • 接続先はどこか(URL)

Prisma Client を生成する設定(generator)

  • Prismaが TypeScript用のDB操作コードを自動生成する
  • @prisma/client として使えるようにする

テーブル設計を書く(model)

マイグレーションとは

データベースのスキーマを変更するためのプロセス。DBの構造の変更履歴を順番に・安全に・再現できる形で保存する仕組み。

コマンドは下記。
「–name init」部分がオプションとなり、意味としては今回のマイグレーションに「init」という名前をつけて保存させる、ということ。

npx prisma migrate dev --name init

実行すると下記ファイルが作成される。「_init」がマイグレーション名として付与されている。

prisma/migrations/
 └─ 20260102021616_init/
     └─ migration.sql

下記で作成したDBが見れる

npx prisma studio
  • User テーブルが見える(schema.prismaで設定したuserテーブルが作成されている)
  • まだデータは 0 件

データを追加してみる

画面上から追加してみる。そして、簡単にpage.tsxで表示させてみる。

import { prisma } from './lib/prisma';

export default async function Home() {
  const users = await prisma.user.findMany();

  return (
    <main>
      <h1>Users</h1>
      <pre>{JSON.stringify(users, null, 2)}</pre>
    </main>
  );
}

画面上にはDBに追加した値が表示される。

c.sakyou

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA