メインコンテンツへスキップ

TypeORM から Prisma ORM への移行方法

15 分

はじめに

このガイドでは、アプリケーションを TypeORM から Prisma ORM に移行する方法を説明します。TypeORM Express の例の拡張バージョン (TypeORM Express の例) をサンプルプロジェクトとして使用して、移行手順を実証します。

この移行ガイドでは、PostgreSQL を例示データベースとして使用していますが、Prisma ORM がサポートする他のリレーショナルデータベースにも同様に適用できます。Prisma ORM と TypeORM の比較については、「Prisma ORM vs TypeORM」ページをご覧ください。

前提条件

このガイドを開始する前に、以下をご確認ください。

  • 移行したい TypeORM プロジェクト
  • Node.js がインストール済みであること(バージョン 16 以上)
  • PostgreSQL またはその他のサポートされているデータベース
  • TypeORM および Express.js の基本的な知識

2. 移行の準備

2.1. 移行プロセスを理解する

TypeORM から Prisma ORM への移行手順は、どのようなアプリケーションや API レイヤーを構築しているかにかかわらず、常に同じです。

  1. Prisma CLI をインストールする
  2. データベースをイントロスペクションする
  3. ベースラインマイグレーションを作成する
  4. Prisma Client をインストールする
  5. TypeORM クエリを Prisma Client に徐々に置き換える

これらの手順は、REST API (例: Express、Koa、NestJS を使用)、GraphQL API (例: Apollo Server、TypeGraphQL、Nexus を使用)、またはデータベースアクセスに TypeORM を使用するその他の種類のアプリケーションを構築しているかどうかにかかわらず適用されます。

2.2. Prisma の設定を行う

新しい Prisma スキーマファイルを作成する

npx prisma init --output ../generated/prisma

.env ファイルの DATABASE_URL をデータベース接続文字列で更新する

DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE"

3. データベーススキーマを移行する

3.1. データベースをイントロスペクションする

Prisma のイントロスペクションを実行して、既存のデータベースから Prisma スキーマを作成する

npx prisma db pull

これにより、データベーススキーマを含む schema.prisma ファイルが作成されます。

3.2. ベースラインマイグレーションを作成する

ベースラインマイグレーションを作成して適用し、データベースの現在の状態をマークする

npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > baseline.sql
npx prisma migrate resolve --applied "baseline"

4. アプリケーションコードを更新する

4.1. Prisma Client をインストールする

Prisma Client パッケージをインストールする

npm install @prisma/client

Prisma Client を生成する

npx prisma generate

4.2. TypeORM クエリを置き換える

TypeORM クエリを Prisma Client に置き換え始めます。一般的なクエリを変換する方法の例を次に示します。

// Find one
const user = await userRepository.findOne({
where: { id: 1 }
});

// Create
const user = await userRepository.save({
email: 'alice@prisma.io',
name: 'Alice'
});

// Update
await userRepository.update(1, {
name: 'New name'
});

// Delete
await userRepository.delete(1);

4.3. コントローラーを更新する

Express コントローラーを更新して Prisma Client を使用するようにします。たとえば、CreateUserAction を更新する方法を次に示します。

import { prisma } from '../client'

export class CreateUserAction {
async run(req: Request, res: Response) {
const { email, name } = req.body

const result = await prisma.user.create({
data: {
email,
name,
},
})

return res.json(result)
}
}

5. テストとデプロイ

5.1. 変更をテストする

移行されたすべてのエンドポイントをテストして、期待どおりに動作することを確認します。

npm test

5.2. 変更をデプロイする

  1. スキーマの変更をデプロイする
npx prisma migrate deploy
  1. 更新された依存関係とともにアプリケーションコードをデプロイします。

次のステップ

Prisma ORM に移行したので、次のことができます。

  • Prisma の強力なクエリ API を使用して、より複雑なクエリを追加する
  • データベース管理のために Prisma Studio をセットアップする
  • データベース監視を実装する
  • Prisma のテストユーティリティを使用して自動テストを追加する

詳細については


Prisma とのつながりを保つ

以下とつながることで、Prisma の旅を続けましょう。 アクティブなコミュニティに参加しましょう。最新情報を入手し、参加し、他の開発者と協力しましょう

皆様のご参加を心より歓迎し、コミュニティの一員としてお迎えできることを楽しみにしています!