データベースにアクセス
React Server Componentsで簡単に

React Server ComponentsでMySQL、PostgreSQL、SQL Server、CockroachDB、MongoDBデータベースからPrismaを使ってデータクエリを実行 – JavaScriptとTypeScriptのためのより良いORM。

tech

Prismaとは?

Prismaはデータ操作を容易にします!タイプセーフなNode.js & TypeScript ORM、グローバルデータベースキャッシュ、コネクションプーリング、リアルタイムデータベースイベントを提供します。

クエリ
// Creating a new record
await prisma.user.create({
firstName: “Alice”,
email: “alice@prisma.io”
})
テーブル
id firstName email
1 Bobby bobby@tables.io
2 Nilufar nilu@email.com
3 Jürgen jums@dums.edu
4 Alice alice@prisma.io

PrismaとReact Server Componentsの連携

Reactは、JavaScriptでユーザーインターフェースを構築するための人気のあるライブラリです。ウェブブラウザで動作するフロントエンドアプリケーションを構築するために使用されます。React Server Componentsを使用すると、Reactコンポーネントをサーバー側でもレンダリングできるようになりました。React Server Componentsは、ファイルシステムやデータベースなどのサーバーサイド機能にフルアクセスできます。そこでPrisma ORMが登場します。Prisma ORMは、React開発者がReact Server Componentsでデータベースをクエリするための最良の方法です。

Prisma ORMの利用をさらに強化する追加ツール
Prisma Accelerateは、グローバルデータベースキャッシュとスケーラブルな接続プールであり、データベースクエリを高速化します。
Prisma Pulseは、タイプセーフな方法でリアクティブなリアルタイムアプリケーションを構築できるようにします。Pulseは、GraphQLサブスクリプションまたはライブクエリを実装するための最適なコンパニオンです。

React Server Components

React Server ComponentsにおけるPrisma

React Server Componentsはサーバー上でレンダリングされるため、@prisma/clientを使用してデータベースと直接通信し、安全かつ効率的なデータベースアクセスを実現できます。

Prismaは、データベースクエリを構築するための開発者に優しいAPIを提供します。内部的には、必要なクエリを生成し、データベースに送信します。

1export default function NoteList({searchText}) {
2 // Query all notes in the database containing the searchText in the title
3 const notes = await prisma.note.findMany({
4 where: {
5 title: {
6 contains: searchText,
7 },
8 },
9 });
10
11 // Display notes in React component
12 return notes.length > 0 ? (
13 <ul className="notes-list">
14 {notes.map((note) => (
15 <li key={note.id}>
16 <SidebarNote note={note} />
17 </li>
18 ))}
19 </ul>
20 ) : (
21 <div className="notes-empty">
22 {searchText
23 ? `Couldn't find any notes titled "${searchText}".`
24 : 'No notes created yet!'}{' '}
25 </div>
26 );
27}
React Server Components
Client Components (従来型)

React Server ComponentsにおけるPrisma

React Server Componentsはサーバー上でレンダリングされるため、@prisma/clientを使用してデータベースと直接通信し、安全かつ効率的なデータベースアクセスを実現できます。

Prismaは、データベースクエリを構築するための開発者に優しいAPIを提供します。内部的には、必要なクエリを生成し、データベースに送信します。

1export default function NoteList({searchText}) {
2 // Query all notes in the database containing the searchText in the title
3 const notes = await prisma.note.findMany({
4 where: {
5 title: {
6 contains: searchText,
7 },
8 },
9 });
10
11 // Display notes in React component
12 return notes.length > 0 ? (
13 <ul className="notes-list">
14 {notes.map((note) => (
15 <li key={note.id}>
16 <SidebarNote note={note} />
17 </li>
18 ))}
19 </ul>
20 ) : (
21 <div className="notes-empty">
22 {searchText
23 ? `Couldn't find any notes titled "${searchText}".`
24 : 'No notes created yet!'}{' '}
25 </div>
26 );
27}
React Server Components

なぜPrismaとReact Server Componentsなのか?

SQL不要

Prismaは、洗練された直感的なAPIでデータの読み書きを簡単に行えるようにします。

より良いパフォーマンス

React Server Componentsでデータベースをクエリすると、アプリケーションのパフォーマンスが大幅に向上します。

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

Prismaの宣言的なモデリング言語はシンプルで、データベーススキーマを直感的に記述できます。

エンドツーエンドのタイプ安全性

PrismaとReactを組み合わせることで、データベースからフロントエンドまで、アプリケーション全体で一貫した型付けが保証されます。

より高い生産性

Prismaは、データベースクエリのオートコンプリート、優れた開発者体験、そして完全なタイプ安全性を提供します。

活発なコミュニティ

ReactとPrismaの両方に活発なコミュニティがあり、サポート、楽しいイベント、素晴らしい人々を見つけることができます。

注目のPrisma & Reactコミュニティ事例

React (Next.js) & Prismaでフルスタックアプリケーションを構築する方法

このガイドは、React(Next.js経由)、Prisma、PostgreSQLを使用して、本番環境対応のフルスタックアプリケーションを構築するための徹底的な入門書です。NextAuth.jsによる認証とVercelによるデプロイメントが含まれています。

RedwoodJS

RedwoodJSはフルスタックアプリケーションフレームワークです。React、GraphQL、Prisma上に構築されており、あなたが愛するコンポーネントと開発ワークフローで動作しますが、あなたの経験をさらに向上させるためのシンプルな規約とヘルパーが付属しています。