Prisma とは
Prisma は、Node.js と TypeScript のための次世代の ORM(Object Relational Mapping)で、データベースとの連携を簡単かつ効率的に行うことができます。Prisma を Next.js と組み合わせることで、データ駆動型の Web アプリケーションを効率的に開発することが可能になります。
Prisma の特徴
- データベースのスキーマを自動的に生成
- スキーマに基づいた型安全なクエリを提供
- 自動補完とリアルタイムの検証機能
- パフォーマンスと可用性の高いデータベースクライアント
それでは、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
を使ってデータを操作できるようになります。詳細なドキュメントはこちらを参照してください