Prisma とは

Prisma は、Node.js と TypeScript のための次世代の ORM(Object Relational Mapping)で、データベースとの連携を簡単かつ効率的に行うことができます。Prisma を Next.js と組み合わせることで、データ駆動型の Web アプリケーションを効率的に開発することが可能になります。

Prisma の特徴

  1. データベースのスキーマを自動的に生成
  2. スキーマに基づいた型安全なクエリを提供
  3. 自動補完とリアルタイムの検証機能
  4. パフォーマンスと可用性の高いデータベースクライアント

それでは、Prisma を Next.js と TypeScript のソースコードに組み込んで解説していきます。

Prisma の導入

まずは、Prisma をプロジェクトに導入しましょう。プロジェクトのルートディレクトリで以下のコマンドを実行します。

npm install prisma --save-dev
npx prisma init

これにより、prisma ディレクトリが作成され、schema.prisma ファイルが生成されます。このファイルでデータベースとモデルの定義を行います。

データベースの設定

PostgreSQL

schema.prisma ファイルを開き、データベースの接続情報を設定します。以下は PostgreSQL を使用する場合の例です。

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

この設定では、環境変数 DATABASE_URL からデータベース接続情報を取得しています。.env ファイルをプロジェクトルートに作成し、以下のように記述します。

DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"
MySQL

MySQL を使う場合は、schema.prisma ファイルのデータベース接続情報を以下のように設定します。

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

次に、.env ファイルに MySQL の接続情報を記述します。

DATABASE_URL="mysql://username:password@localhost:3306/mydb"

これで、MySQL を使う場合のデータベース設定が完了しました。他の部分は PostgreSQL と同様の手順で進めてください。

モデルの定義

次に、データベースのテーブルに対応するモデルを定義します。以下は、ブログ記事とコメントを管理する例です。

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  comments  Comment[]
}

model Comment {
  id        Int      @id @default(autoincrement())
  content   String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  postId    Int
  post      Post     @relation(fields: [postId], references: [id])
}

これで、データベースとモデルの定義が完了しました。

データベースの設定やスキーマを定義した後、Prismaを使ってデータを操作できるようになります。詳細なドキュメントはこちらを参照してください

Prisma Documentation | Concepts, Guides, and Reference