• トップ
  • ブログ一覧
  • Prismaってなに?【前編】
  • Prismaってなに?【前編】

    イデ(エンジニア)イデ(エンジニア)
    2023.01.20

    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は大きく、五つで分けます。

    1. Prisma schema
    2. Prisma introspect
    3. Prisma migration
    4. Prisma client
    5. 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を使ってみましょう!!

    最後まで読んでいただき、ありがとうございました!🙇‍♂️

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background