ReactNextCentral

ORM을 사용 데이터베이스 접근

Published on
Vercel Postgres 데이터베이스에 접근하기 위한 다양한 ORM 사용법을 소개하는 가이드입니다.
Table of Contents

ORM을 사용하여 Postgres 데이터베이스 접근하기

앱에서 선호하는 ORM을 사용하여 데이터베이스에 접근하는 방법을 알아보세요.

Vercel Postgres는 SDK를 제공하지만, 대규모 애플리케이션의 경우 ORM 사용을 권장합니다.

시작하기

선호하는 ORM을 사용하여 Vercel Postgres를 시작하려면, Postgres 빠른 시작 가이드의 지침을 따르세요.

이 페이지에 여러분의 ORM이 소개되어 있다면, 가장 최적의 구성 지침을 위해 해당 섹션을 읽어보세요.

Kysely

Kysely는 타입 안전성과 자동완성 친화적인 타입스크립트 SQL 쿼리 빌더입니다. 지금 Kysely 템플릿을 사용하여 Vercel Postgres에 연결된 Next.js 프로젝트를 배포하세요.

Kysely를 사용하려면 다음 단계를 따르세요.

  1. Kysely 패키지 설치:
npm i kysely @vercel/postgres-kysely
  1. 풀링된 연결을 가진 클라이언트를 생성하기 위해 @vercel/postgres-kyselycreateKysely 메서드 사용:
import { createKysely } from '@vercel/postgres-kysely';
 
interface Database {
  person: PersonTable;
  pet: PetTable;
  movie: MovieTable;
}
 
const db = createKysely<Database>();
 
await db
  .insertInto('pet')
  .values({ name: 'Catto', species: 'cat', owner_id: id })
  .execute();
 
const person = await db
  .selectFrom('person')
  .innerJoin('pet', 'pet.owner_id', 'person.id')
  .select(['first_name', 'pet.name as pet_name'])
  .where('person.id', '=', id)
  .executeTakeFirst();

Kysely는 모든 PostgreSQL 명령어를 지원합니다. 사용된 메서드의 전체 참조는 Kysely 문서를 확인하세요.

Prisma

Prisma는 타입 안전 쿼리 빌더, 마이그레이션 시스템, 데이터베이스 관리 인터페이스를 포함한 차세대 ORM입니다. 지금 Prisma 템플릿을 사용하여 Vercel Postgres와 연결된 Next.js 프로젝트를 배포하세요.

Vercel Postgres와 Prisma를 사용하려면 다음을 수행해야 합니다.

  1. Postgres 빠른 시작 가이드의 지침을 따르세요.

  2. Prisma 클라이언트와 Prisma CLI 설치:

npm i prisma @prisma/client
  1. schema.prisma 파일에서 환경 변수를 아래와 같이 사용하세요.
generator client {
  provider = "prisma-client-js"
}
 
datasource db {
  provider = "postgresql"
  url = env("POSTGRES_PRISMA_URL")
  directUrl = env("POSTGRES_URL_NON_POOLING")
}
 
model User {
  id        Int      @id @default(autoincrement())
  name      String
  email     String   @unique
  image     String
  createdAt DateTime @default(now())
}
  1. @prisma/client를 사용하여 Vercel Postgres 데이터베이스 쿼리하기:
import { PrismaClient } from '@prisma/client';
 
const prisma = new PrismaClient();
 
export default async function prismaExample() {
  const newUser = await prisma.user.create({
    data: {
      name: 'Elliott',
      email: 'xelliottx@example-user.com',
    },
  });
 
  const users = await prisma.user.findMany();
}
  1. prisma 스키마를 변경할 때마다 마이그레이션을 실행한 후 prisma generate를 실행하여 node_modules/.prisma/client 디렉토리에 있는 생성된 타입 생성을 업데이트해야 합니다. 이 작업은 package.json에 다음 스크립트를 추가하여 수행할 수 있습니다.
{
  "scripts": {
    "vercel-build": "prisma generate && prisma migrate deploy && next build"
  }
}

Prisma 클라이언트

POSTGRES_PRISMA_URL 환경 변수를 사용하여 Prisma에 연결할 때 connect_timeout=10pgbouncer=true 매개변수가 설정됩니다.

더 알아보려면 Prisma 문서를 참조하세요.

Prisma 마이그레이트

데이터베이스를 마이그레이션하려면 Prisma 마이그레이트 문서를 참조하세요.

Drizzle

Drizzle은 개발자가 타입 안전한 SQL 쿼리를 구축할 수 있게 하는 TypeScript ORM입니다. 이는 제로 종속성을 기반으로 하며 SQL과 유사한 문법을 사용해 다른 ORM보다 낮은 학습 곡선을 제공합니다. 지금 Drizzle 템플릿을 사용하여 Vercel Postgres와 연결된 Next.js 프로젝트를 배포하세요.

Vercel Postgres와 Drizzle을 사용하려면 다음을 수행해야 합니다.

  1. Postgres 빠른 시작 가이드의 지침을 따르세요.
  2. drizzle-orm 패키지 설치:
npm i drizzle-orm
  1. Drizzle를 사용하여 Vercel Postgres 데이터베이스에 연결하는 클라이언트 생성:
import { drizzle } from 'drizzle-orm/vercel-postgres';
import { sql } from '@vercel/postgres';
import {
  pgTable,
  serial,
  text,
  timestamp,
  uniqueIndex,
} from 'drizzle-orm/pg-core';
 
export const db = drizzle(sql);
export const ExampleTable = pgTable(
  'users',
  {
    id: serial('id').primaryKey(),
    name: text('name').notNull(),
    email: text('email').notNull(),
    image: text('image').notNull(),
    createdAt: timestamp('createdAt').defaultNow().notNull(),
  },
  (users) => {
    return {
      uniqueIdx: uniqueIndex('unique_idx').on(users.email),
    };
  },
);
 
export const getExampleTable = async () => {
  const selectResult = await db.select().from(ExampleTable);
  console.log('Results', selectResult);
};

Drizzle-Kit

Vercel Postgres와 Drizzle-Kit을 사용하려면 다음을 확인해야 합니다.

  1. Vercel Postgres 연결 문자열에 sslmode=require 쿼리 매개변수가 포함되어 있는지 확인하세요. 포함되어 있지 않다면 프로젝트를 다시 연결하여 이 쿼리 매개변수가 포함된 연결 문자열을 생성하세요.
  2. drizzle-kit 패키지 설치:
npm i drizzle-kit
  • pg 드라이버 설치:
npm i pg
  1. 데이터베이스 마이그레이션, 프로토타이핑 및 Drizzle-Studio 사용에 대해 Drizzle-Kit 문서를 참조하세요.