Prismaという技術スタックを聞いて、よく知らなかったので調べた
Prismaはデータベースへのアクセスを容易にするツールセット(ORM)
従来のORMと違うところ
従来のORMはプログラミング言語のモデルクラスにテーブルをマッピングすることにより、リレーショナルデータベースを操作するためのオブジェクトを提供する
スキーマを変更する場合はORMによって操作可能だが、モデルクラスの変更は手動で行う必要がある
そのためこのアプローチは、オブジェクトと相対インピーダンスの不一致によって引き起こされる多くの問題につながる可能性がある
Prismaはそれとは根本的に異なる働きをする
Prismaは、データベーススキーマとプログラミング言語のモデルの2つの間で唯一のマッピング情報源として機能する
Prismaは、型安全性、豊富なオートコンプリート、リレーションを取得するための自然なAPIなどの機能を備えており、構築中のソフトウェアの生産性と信頼性を高めることができる
利点
- ユーザが定義したPrismaスキーマに基づいてPrismaClientを生成することにより、クラスの定義とロジックのマッピングの定型文を減らす
- アプリケーションオブジェクトとデータベーススキーマ間の同期の問題がなくなる
- データベースのマイグレーションは、Prismaスキーマから派生しているため、第一級オブジェクトになる
- アプリケーションコードでは、Prisma Clientを使用して、複雑なモデルインスタンスを管理するオーバーヘッドなしに、タイプセーフな方法でデータベース内のデータを読み書きができる
- Prisma Clientは常にプレーンなJavaScriptオブジェクトを返すため、これにより、データのクエリプロセスがより自然になり、予測しやすくなる
参考
https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/is-prisma-an-orm