Prismaってなに?【前編】
IT技術
はじめに
こんにちは!
遅くなりましたが、明けましておめでとうございます!
いよいよ2023年になりましたね。2023年初めての記事は。。?
「Prisma」です!!!
今回の記事はシリーズです!
よろしくお願いいたします。
ORMってなに?
みなさん、ORMってご存知ですか?
ORM(Object-Relational Mapping)というのは、Object(Class)とRelation(RDB)の設定の意味です。
ここで、ObjectModelとRelationModelの不一致が存在しますが、それをObjectの関係を利用して
SQLを生成し、不一致の問題を解決するのがORMとなります。
例)Object ← Mapping → DB
Prismaってなに?
Is Prisma an ORM?(PrismaはORMですか?)
To answer the question briefly: Yes, Prisma is a new kind of ORM that fundamentally differs from traditional ORMs and doesn't suffer from many of the problems commonly associated with these.
簡単に質問に答えると : はい、プリズマは従来のORMとは根本的に異なる新しい種類のORMであり、これらに関連する一般的な問題の多くに悩まされない。
引用:https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/is-prisma-an-orm
そうです。上に書いてる通り、PrismaはORMです。
そして、既存のORMの問題にかかりません。って書いてますね。
見てみましょうか?
Prismaの構成
Prismaは大きく、五つで分けます。
- Prisma schema
- Prisma introspect
- Prisma migration
- Prisma client
- Prisma studio
Prisma schema?
- Prisma schemaはGenerator、Data Sources、Data Model三つで構成されています。
以下は、schema.prismaファイルの例です。
1// schema.prisma
2// This is your Prisma schema file,
3// learn more about it in the docs: https://pris.ly/d/prisma-schema
4
5generator client { // Generator - Prismaのコマンドを実行する環境を決める場所です。
6 provider = "prisma-client-js"
7}
8
9datasource db { // Data Source
10 provider = "mysql" // DB種類
11 url = env("DATABASE_URL") // 接続するDB、直接入力も可能です。
12}
13
14model User { // Data Model - PSL(Prisma Schema Language)使用。FieldとFieldTypeの設定が可能。1:n、n:m制約条件等可能
15 id BigInt @id @default(autoincrement())
16 name String @unique @db.VarChar(255)
17
18 @@map("users") // ここを設定するとテーブルの名前を変更できます。
19}
引用:https://www.prisma.io/docs/concepts/components/prisma-schema
Prisma introspect?
- Prismaでは、既存のDBの修正をORMにマッピングする必要はありません。
DBのURLを設定し、「npx prisma introspect」なら、既存のDBの構成を自動でPrisma Schemaに引き寄せます。
1npx prisma db pull // update prisma schema
2npx prisma generate // update prisma
3...
引用:https://www.prisma.io/docs/concepts/components/introspection
Prisma migration?
- 新しいテーブルを作るか、既存んテーブルにcolumnを追加する等のDatabaseを変更します。
Prisma schemaを変更することで、行われるのでSQLを作成しなくてもいいです。
1// 以下のコマンドで、schemaをDBに反映し、prisma clientをupdate
2npx prisma migrate dev // migrate 反映
3npx prisma generate // client update
4...
引用:https://www.prisma.io/docs/concepts/components/prisma-migrate
Prisma client?
- clientはデータに合わせて、自動でQuery生成するものです。
1import { PrismaClient } from '@prisma/client'
2
3const prisma = new PrismaClient() // PrismaClientから実行
4
5const createUser = await prisma.user.create({ // userの生成
6 data: {
7 name: 'TestUser',
8 },
9})
10
11const fineUsers = await prisma.user.findMany() // 現在持っているuserデータを全て検索
引用:https://www.prisma.io/docs/concepts/components/prisma-client
Prisma studio?
- studioはブラウザ上で見れるDBツール(GUI対応)です。
「npx prisma studio」で見れます。
引用:https://www.prisma.io/docs/concepts/components/prisma-studio
最後に、、、
ここまでPrismaに関する簡単な説明でした。
Prismaって結構楽なものです。
次の記事では、実際にPrismaを使ってみましょう!!
最後まで読んでいただき、ありがとうございました!🙇♂️
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ