簡単なデータベースアクセス
GraphQLサーバーで

MySQL、PostgreSQL、SQL ServerデータベースからGraphQLでデータをクエリします。JavaScriptおよびTypeScript向けのより良いORMであるPrismaを使用。

tech

Prismaとは?

Prismaは、驚くべきDX(開発者体験)で高性能なNext.jsアプリを構築するための完璧なコンパニオンとなるデータベースツールを提供します。

ORM

Prisma ORMは最も人気のあるTypeScript ORMです。人間が読みやすいスキーマ、自動化されたマイグレーション、直感的で完全に型安全なクエリAPIが付属しています。

Prisma ORMについてもっと知る

Postgres

Prisma Postgresは、コールドスタートのない最初のサーバーレスデータベースです。ユニカーネルに基づいており、ベアメタルで動作し、組み込みキャッシュ、高性能クエリ、シームレスなスケーリングを提供します。これらすべてが素晴らしいDXと共に実現されます。

Prisma Postgresについてもっと知る

PrismaとGraphQLの連携方法

GraphQLは、WebおよびモバイルアプリがAPIからデータをフェッチするための強力な方法を提供します。しかし、バックエンド開発者としては、GraphQLリゾルバを実装することで、GraphQLサーバーが要求されたデータをデータベースからどのように取得するかについて依然として責任があります。ここにPrisma ORMが役立ちます。Prisma ORMは、データベースをクエリするためにGraphQLリゾルバ内で使用されます。GraphQLエコシステムのすべてのお気に入りのツールやライブラリとシームレスに統合します。

Prisma ORMの利用をさらに強化する追加ツールも利用できます
Prisma Accelerateは、グローバルデータベースキャッシュとスケーラブルなコネクションプールで、データベースクエリを高速化します。
Prisma Pulseを使用すると、リアクティブでリアルタイムのアプリケーションを型安全に構築できます。Pulseは、GraphQLサブスクリプションやライブクエリを実装するのに最適なコンパニオンです。

Prismaスキーマ

Prismaスキーマは、Prismaのモデリング言語を使用してデータベーススキーマを定義します。これにより、データモデリング、特にリレーションのモデリングが簡単で直感的になります。

Prismaスキーマの構文は、GraphQL SDLから大きくインスピレーションを受けています。もしSDLにすでに慣れているなら、データベーステーブルをモデリングするためにPrismaスキーマを学ぶのは非常に簡単でしょう。

1// Define the `User` table in the database
2model User {
3 id String @id @default(cuid())
4 email String @unique
5 password String
6 name String?
7 posts Post[]
8}
9
10// Define the `Post` table in the database
11model Post {
12 id String @id @default(cuid())
13 title String
14 content String?
15 authorId String
16 author User @relation(fields: [authorId], references: [id])
17}

PrismaとGraphQLのユースケース

Prismaは、graphql-toolsmakeExecutableSchemaを使用したSDLファーストアプローチでも、NexusやTypeGraphQLのようなコードファーストアプローチでも、GraphQLリゾルバで使用できます。

注記:以下のすべての例では、express-graphqlをGraphQLサーバーとして使用していますが、これらはApollo Server、NestJS、Mercuriusなどの他のライブラリでも動作します。

GraphQL Tools(SDLファースト)

GraphQL Tools — SDLファースト

GraphQLスキーマを構築するためにSDLファーストアプローチを使用する場合、GraphQLスキーマ定義を文字列として提供し、この定義を実装するリゾルバマップを提供します。リゾルバ内でPrisma Clientを使用して、データベースのデータを読み書きし、着信したGraphQLクエリとミューテーションを解決できます。

1import { PrismaClient } from '@prisma/client';
2import express from 'express';
3import { graphqlHTTP } from 'express-graphql';
4import { makeExecutableSchema } from '@graphql-tools/schema';
5
6const prisma = new PrismaClient();
7
8const typeDefs = `
9 type User {
10 email: String!
11 name: String
12 }
13
14 type Query {
15 allUsers: [User!]!
16 }
17`;
18
19const resolvers = {
20 Query: {
21 allUsers: () => {
22 return prisma.user.findMany();
23 }
24 }
25};
26
27export const schema = makeExecutableSchema({
28 resolvers,
29 typeDefs,
30});
31
32const app = express();
33app.use('/graphql', graphqlHTTP({
34 schema,
35}));
36
37app.listen(4000);
Nexus(コードファースト)
TypeGraphQL(コードファースト)

GraphQL Tools — SDLファースト

GraphQLスキーマを構築するためにSDLファーストアプローチを使用する場合、GraphQLスキーマ定義を文字列として提供し、この定義を実装するリゾルバマップを提供します。リゾルバ内でPrisma Clientを使用して、データベースのデータを読み書きし、着信したGraphQLクエリとミューテーションを解決できます。

1import { PrismaClient } from '@prisma/client';
2import express from 'express';
3import { graphqlHTTP } from 'express-graphql';
4import { makeExecutableSchema } from '@graphql-tools/schema';
5
6const prisma = new PrismaClient();
7
8const typeDefs = `
9 type User {
10 email: String!
11 name: String
12 }
13
14 type Query {
15 allUsers: [User!]!
16 }
17`;
18
19const resolvers = {
20 Query: {
21 allUsers: () => {
22 return prisma.user.findMany();
23 }
24 }
25};
26
27export const schema = makeExecutableSchema({
28 resolvers,
29 typeDefs,
30});
31
32const app = express();
33app.use('/graphql', graphqlHTTP({
34 schema,
35}));
36
37app.listen(4000);

なぜPrismaとGraphQLなのか?

エンドツーエンドの型安全性

データベースからフロントエンドまで、アプリケーション全体で一貫した型付けを実現し、生産性を向上させ、エラーを回避します。

最適化されたデータベースクエリ

Prismaに組み込まれたデータローダーは、N+1クエリであっても、最適化され高性能なデータベースクエリを保証します。

型安全なデータベースクライアント

Prisma Clientは、JavaScriptでもオートコンプリートなどの利点を持つ完全に型安全なデータベースクエリを保証します。

直感的なデータモデリング

Prismaのモデリング言語はGraphQL SDLからインスピレーションを受けており、データベーススキーマを直感的に記述できます。

簡単なデータベースマイグレーション

Prismaスキーマをデータベースにマッピングできるため、データベーススキーマを管理するためにSQLを記述する必要がありません。

フィルター、ページネーション、並び替え

Prisma Clientは、一般的なデータベース機能のための便利なAPIを提供することで、定型コードを削減します。

Timeline from GraphCool to Prisma and Nexus Schema

私たちはGraphQLが大好きです❤️

Prismaでは、GraphQLを愛し、その明るい未来を信じています。人気のGraphQL BaaSである Graphcoolを運営して以来、私たちは過去にGraphQLエコシステムに多くの貢献をしてきましたし、現在も開発者がGraphQLを採用するのに役立つ様々なツールに投資しています。

私たちはまた、 GraphQL Foundation の誇り高きメンバーであり、GraphQLコミュニティとエコシステムの発展を支援しています。

当社のGraphQLリソース

GraphQL Weekly

GraphQLコミュニティとエコシステムに関する週刊ニュースレター

GraphQL Berlin Meetup

GraphQL Berlin Meetupは2016年に開始され、世界で最も人気のあるGraphQL Meetupの1つです

How to GraphQL

私たちは、開発者がGraphQLについて学ぶのを助けるために、人気のフルスタックGraphQLチュートリアルウェブサイト「How to GraphQL」を構築しました。

© 2025 prisma.dokyumento.jp. All rights reserved.