hapi開発者のための完璧なORM

hapiアプリでPrismaを使ってMySQL、PostgreSQL、SQL Serverデータベースからデータをクエリ — JavaScriptとTypeScriptのためのより良いORMです。

tech

Prismaとは?

Prismaは、最高のDXで高性能なNext.jsアプリを構築するための完璧なデータベースツールを提供します。

ORM

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

Prisma ORMについて詳しく知る

Postgres

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

Prisma Postgresについて詳しく知る

Prismaとhapiの連携方法

Prismaは、hapiアプリでデータベースをクエリするために使用される次世代ORMです。プレーンなSQLクエリを記述する代わりに、knex.jsのようなクエリビルダーを使用したり、TypeORM、MikroORM、Sequelizeのような従来のORMの代替として使用できます。

Prismaはhapiと相性が良いですが、koa.js、Fastify、FeathersJSなどの他のWebフレームワークとも使用できます。PrismaはRESTおよびGraphQL APIの構築に使用でき、マイクロサービスアーキテクチャとモノリシックアーキテクチャの両方とスムーズに統合します。

PrismaとHapiのユースケース

Prismaはhapiと完全に統合する便利なデータベースアクセスレイヤーを提供します。

以下のコードは、APIサーバーを構築するためにhapiを使用する際のPrismaの様々な使用方法を示しています。

prismaPlugin

prismaPlugin

prismaPluginは、ドメイン固有またはモデル固有のプラグインの基盤となります。そこに含まれるPrismaClientインスタンスは、アプリケーションの残りの部分にデータベースインターフェースを提供します。

1import { PrismaClient } from '@prisma/client'
2import Hapi from '@hapi/hapi'
3
4declare module '@hapi/hapi' {
5 interface ServerApplicationState {
6 prisma: PrismaClient
7 }
8}
9
10const prismaPlugin = {
11 name: 'prisma',
12 register: async function(server) {
13 const prisma = new PrismaClient()
14
15 server.app.prisma = prisma
16
17 server.ext({
18 type: 'onPostStop',
19 method: async (server) => {
20 server.app.prisma.$disconnect()
21 },
22 })
23 },
24}
25
26export default prismaPlugin
usersPlugin
Prismaスキーマ

prismaPlugin

prismaPluginは、ドメイン固有またはモデル固有のプラグインの基盤となります。そこに含まれるPrismaClientインスタンスは、アプリケーションの残りの部分にデータベースインターフェースを提供します。

1import { PrismaClient } from '@prisma/client'
2import Hapi from '@hapi/hapi'
3
4declare module '@hapi/hapi' {
5 interface ServerApplicationState {
6 prisma: PrismaClient
7 }
8}
9
10const prismaPlugin = {
11 name: 'prisma',
12 register: async function(server) {
13 const prisma = new PrismaClient()
14
15 server.app.prisma = prisma
16
17 server.ext({
18 type: 'onPostStop',
19 method: async (server) => {
20 server.app.prisma.$disconnect()
21 },
22 })
23 },
24}
25
26export default prismaPlugin

Prismaとhapiの組み合わせを選ぶ理由

スムーズな統合

Prismaは、REST APIを構築している場合でもGraphQL APIを構築している場合でも、hapiの柔軟なアーキテクチャに完璧に適合します。

生産性の向上

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

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

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

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

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

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

宣言的なPrismaスキーマから、予測可能でカスタマイズ可能なSQLマイグレーションを生成します。

API構築のために設計

Prisma Clientは、一般的なAPI機能(ページネーション、フィルターなど)のクエリを提供することで、ボイラープレートを削減します。

注目のPrisma & hapiの例

TypeScript、PostgreSQL、Prismaでモダンなバックエンドを構築する

hapiとPrismaでモダンなバックエンドを構築するためのチュートリアルシリーズ

REST APIスターターキット

SQLiteデータベースを使用したREST APIのすぐに実行できるサンプルプロジェクト

GraphQL APIスターターキット

SQLiteデータベースを使用したGraphQL APIのすぐに実行できるサンプルプロジェクト

© . All rights reserved.