【初心者用】Prismaについて

公開日: 2024/3/19

Prismaは、データベース操作するためのORMです。

Prismaを使用することで、データベースのスキーマを定義し、型安全なクエリを実行できます。

また、Prismaは、Prisma Migrateと呼ばれるマイグレーションツールなどを提供しています。


データベースのスキーマ変更に伴うマイグレーションを簡単に行うことができます。

具体的には、prismaを使用することで、以下のようなことが可能です。

 ・データベースのスキーマ定義

 ・データのクエリ

 ・データの作成、更新、削除

 ・データの関連付け


Prismaは、Prisma Clientと呼ばれる型安全なクライアントライブラリも提供しています。

これにより、SQLクエリを直接記述する必要がなくなります。

1. Prismaを導入するメリット


Prismaを導入することで、以下のメリットがあります。


1.型安全なクエリビルダーを提供することで、コードの一貫性を保ちます。

これにより、開発者は、SQLを書く必要がなくなります。


2.データベーススキーマの変更を自動的に検出し、マイグレーションを実行します。

これにより、開発者は手動でマイグレーションを実行する必要がなくなります。


3.Node.jsとTypeScriptとの相性がよく、開発者が迅速かつ簡単にアプリケーションを構築できるように設計されています。


4.SQLインジェクション攻撃から保護するために、型安全なクエリビルダーを提供します。

2. Prismaとは?


Prismaは、アプリケーションを構築する際に、データを保存するため必ずデータベースが必要になります。

データベースを効率的に管理し、簡単に操作を行うためのツールがprismaです。


Prismaは、Node.js ORMの1つです。

Node.jsには、リレーショナルデータベースに対する、統一的なインターフェースが存在しないため、ORMを利用することで、各データベースへのアクセスを一律に担ってくれます。

3. ORMとは?


ORMは、Object-Relational Mappingの頭文字をとったものです。

プログラミング言語のオブジェクトで定義したメソッドで、SQLを書かずにデータベースの操作が可能なツールです。

データベースの操作や仲介する役割をもち、データベースの作成やマイグレーションといった操作も可能です。

4. なぜNode.jsにORMを利用するのか?


Node.jsでは、リレーショナルデータベースにアクセスするには、npmパッケージを利用します。アクセス方法は各データベースによって違います。

各データベースごとに公式、非公式問わずのnpmパッケージが複数存在し、各データベースのnpmパッケージは開発、保守が止まっているものもあるため、npmパッケージの選定を慎重に行う必要があります。


ORMを使用することで、SQL文を書く必要がなくなり、アプリケーションのModelとデータベースのテーブルのマッピングさえしていれば、データベースの操作ができるようになります。

さらにORMは、型安全性や自動補完機能などの機能を提供することができます。

これにより、開発者はコードの一貫性を保ちやすくなります。


以上のことから、Node.jsにORMを導入することで、開発者はSQL文を書く必要がなくなり、データベース操作を簡単に行えるようになるため、開発効率が向上します。

5. Prismaの構成

・Prisma Schema

Prisma Schemaは、Prismaで使用するデータモデルを定義するファイルです。

データベースの接続設定やモデル定義を記述するためのファイルで、このファイルを更新することで、データベーススキーマとPrimaクライアントが同期されます。

Prisma Schemaは、Generator、Data Sources、Data Modelの三つで構成されています。

以下は、schema.prismaファイルの例になります。





https://www.prisma.io/docs/concepts/components/prisma-schema

・データソース(Data Sources):Prismaが接続するデータソースの詳細を指定します。

・ジェネレーター(Generator):データモデルに基づいてどのクライアントを生成するか指定します。

・モデル( Model):アプリケーションモデルとその関係を指定します。

Prisma Schemaは通常、プロジェクトのデータベースモデルを明示的に定義し、Prismaのコード生成機能を使用して、データベースへのクエリを型安全に行うために使用します。

このPrisma Schemaは、UserとPostという2つのモデルを定義し、それらのモデル間に関連性を設定しています。Prismaを使用すると、このスキーマを基にデータベースを作成し、Prisma Clientを生成して型安全なクエリを実行できます。


・Prisma Introspect

Prisma Introspectは、Prisma CLIを使用して、既存のデータベーススキーマからPrismaスキーマを生成するためのツールです。

DBのURLを設定し、既存のDBの構成を自動でPrisma Schemaに引き寄せます。

・Prisma Migration

Prisma Migrationは、データベーススキーマのマイグレーションを宣言的に行うためのツールです。

新しいテーブルを作ったり、既存のテーブルにcolumnを追加するなどのデータベースを変更します。

.sqlマイグレーションファイルの履歴を生成し、開発とデプロイメントの両方で役割を果たします。

・Prisma Client

Prisma Clientは、Prismaで生成されたデータモデルを使用して、データベースに対するクエリを実行するためのタイプセーフなデータベースクライアントです。

このクライアントは、TypeScriptのメソッドを使用して、SQLを記述することなくデータベース操作をすることができます。

・Prisma Studio

Prisma Studioは、Prismaを使用する場合に、GUIでデータベースの操作を行うことができるツールです。

タブ形式のインターフェイスを備えたエディターで、ローカルデータベースのデータを簡単に操作できます。

フィルタリング、ソート、ページネーションなどの機能を使用して、データ表示する方法を自由に選択できます。

また、関連するデータに簡単にアクセスし、関連するモデルにドリルダウンすることもできます。





https://www.prisma.io/docs/data-platform/classic-projects/platform/data-browser

様々なデータベース、フレームワーク・ライブラリとの連携が可能です。

・データベース

   ・PostgreSQL
   ・MySQL
   ・SQLite
   ・MongoDB
    etc..

・フレームワーク・ライブラリ<

6. まとめ

今回、Prismaについてまとめて紹介し解説しました。

Prismaに関する簡単な説明でしたが、Prismaはすごく便利な機能です。


Node.jsでの開発する際に、データベース操作のやりとりを手軽にできるため、お試しで作成してみてもいいのではないでしょうか。