- HOME >
- Jamstack用語集 >
- Prisma
Prisma
プリズマ
Prisma を分かりやすく
Prismaとは、Node.jsやTypeScriptのための次世代のデータベースクライアントで、開発者がデータベースと簡単にやりとりできるように設計されています。SQLやNoSQLなど様々なデータベースに対応していて、APIを介してデータベースにクエリを投げたり、取得したりすることが可能です。
Prismaを使うと、データベースとの通信が一気に楽になるんですよ。じゃあ、Prismaを使わないとどうなるか?それを分かりやすく例えてみますね。
想像してみてください。あなたが一人で複雑な道路を走っているとします。道路は曲がりくねっていて、交通のルールがたくさんありますよね。それがデータベースとの通信だと思ってください。色々なクエリを書かなければならず、それぞれのデータベースによってルールが違ったりする。そんな状況です。
でも、Prismaがあれば、まるで専用のナビゲーションシステムがあるかのようです。それがあなたの代わりに複雑なルートを計算し、最適な道筋を提案してくれるんです。また、交通ルールについても知らせてくれますから、迷うことなくスムーズに目的地に到達できます。そんな感じですね。
一体ナンノコッチャ?って思うかもしれませんが、基本的には「データベースへの道案内役」だと思ってもらえれば大丈夫ですよ。凄くないですか?ここまで大丈夫ですか?
結論
Prisma(プリズマ)は、TypeScript や JavaScript で書かれたデータベースツールであり、クエリやマイグレーションなどを簡単に扱えるようにするためのライブラリです。Prisma は、オープンソースで開発され、データベースの種類に依存しない API を提供します。
Prisma のメリット
Prisma は TypeScript と JavaScript のための強力な型安全なデータベースクライアントを提供します。これにより、開発者はコンパイル時にエラーを検出でき、デバッグ時間を節約し、ランタイムエラーを減らすことができます。また、データベーススキーマを定義するための独自のスキーマ言語、PSL を提供します。これにより、データベースのテーブル、リレーション、インデックスなどを簡単に定義できます。
PostgreSQL、MySQL、SQLite、SQL Server など、多くの人気のある SQL データベースをサポートしています。そして、速度と効率性を重視して設計されており、大量のデータに対しても高速なクエリが可能です。
次は公式サイトに書いてあるソースコードです。NestJS アプリケーションで Prisma クライアントをラップし、アプリケーションのライフサイクルに合わせてデータベース接続を管理するためのサービスを定義しています。
import { Injectable, OnModuleInit, INestApplication } from '@nestjs/common'
import { PrismaClient } from '@prisma/client'
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
async onModuleInit() {
await this.$connect()
}
async enableShutdownHooks(app: INestApplication) {
this.$on('beforeExit', async () => {
await app.close()
})
}
}
NestJS Database & Prisma | Type-safe ORM for SQL Databases
Prisma の使い方
以下は、Prisma を使った例を紹介します。
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
const users = await prisma.user.findMany({
where: {
age: {
gt: 18,
},
},
orderBy: {
name: 'asc',
},
})
console.log(users)
}
main()
.catch((e) => {
console.error(e)
process.exit(1)
})
.finally(async () => {
await prisma.$disconnect()
})
この例では、Prisma を使って、データベースから年齢が 18 歳を超えるユーザーを取得しています。Prisma は、データベースへのクエリをシンプルにするために、ORM(Object-Relational Mapping)と呼ばれる機能を提供します。この例では、prisma.user.findMany
を使って、users テーブルから年齢が 18 歳を超えるユーザーを取得しています。また、orderBy を使って、名前を昇順で並び替えています。
最後に、取得したユーザーをコンソールに表示しています。
このように、Prisma を使うことで、データベースへのクエリをシンプルにすることができます。また、Prisma は、データベースの種類に依存しない API を提供するため、データベースを変更する際にも、アプリケーションの変更を最小限に抑えることができます。