티스토리 뷰

반응형

Prisma Client 활용법: 타입 안전한 CRUD 쿼리 작성하기

Prisma Client는 Prisma ORM에서 제공하는 강력한 데이터베이스 클라이언트로, 타입 안전한 방식으로 CRUD(Create, Read, Update, Delete) 쿼리를 실행할 수 있습니다.
이번 글에서는 Prisma Client를 활용한 기본 CRUD 연산과 필터링, 정렬, 페이지네이션 등의 다양한 기능을 다뤄보겠습니다.


1. Prisma Client란?

Prisma Client는 데이터베이스와 상호작용하는 자동 생성된 타입 안전한 API입니다.
이를 통해 직관적인 코드로 데이터를 조작하고, SQL보다 간결한 방식으로 CRUD 작업을 수행할 수 있습니다.

🔹 Prisma Client 생성

Prisma Client를 사용하려면 먼저 generate 명령어를 실행해야 합니다.

npx prisma generate

이제 @prisma/client 패키지를 가져와 사용할 수 있습니다.

const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

2. 데이터 생성(Create)

🔹 사용자(User) 추가

새로운 사용자를 데이터베이스에 추가하는 코드입니다.

const newUser = await prisma.user.create({
  data: {
    name: "Alice",
    email: "alice@example.com"
  }
});
console.log("새로운 사용자:", newUser);
  • create() 메서드를 사용해 새 레코드를 삽입할 수 있습니다.
  • data 객체에 삽입할 필드를 지정합니다.

🔹 여러 개의 데이터 추가 (createMany)

await prisma.user.createMany({
  data: [
    { name: "Bob", email: "bob@example.com" },
    { name: "Charlie", email: "charlie@example.com" }
  ]
});
  • createMany()를 사용하면 여러 개의 데이터를 한 번에 추가할 수 있습니다.
  • 단, createMany()는 @unique 필드가 있는 경우 중복 데이터 오류가 발생할 수 있으므로 주의해야 합니다.

3. 데이터 조회(Read)

반응형

🔹 모든 사용자 조회

const users = await prisma.user.findMany();
console.log("사용자 목록:", users);
  • findMany()는 테이블의 모든 데이터를 반환합니다.

🔹 특정 조건으로 조회

const user = await prisma.user.findUnique({
  where: { email: "alice@example.com" }
});
console.log("특정 사용자:", user);
  • findUnique()는 특정 고유(Unique) 필드를 기준으로 데이터를 찾을 때 사용합니다.
  • where 절을 활용해 조건을 설정할 수 있습니다.

🔹 특정 필드만 조회 (Select)

const userNames = await prisma.user.findMany({
  select: { name: true }
});
console.log("사용자 이름 목록:", userNames);
  • select 옵션을 사용하면 원하는 필드만 조회할 수 있습니다.

4. 데이터 수정(Update)

🔹 특정 사용자 정보 수정

const updatedUser = await prisma.user.update({
  where: { email: "alice@example.com" },
  data: { name: "Alice Wonderland" }
});
console.log("업데이트된 사용자:", updatedUser);
  • update()는 where 조건을 만족하는 데이터를 수정합니다.
  • data 객체에 변경할 값을 지정합니다.

🔹 여러 개의 데이터 수정 (updateMany)

await prisma.user.updateMany({
  where: { name: "Bob" },
  data: { name: "Bobby" }
});
  • updateMany()를 사용하면 여러 개의 레코드를 한 번에 수정할 수 있습니다.

5. 데이터 삭제(Delete)

🔹 특정 사용자 삭제

await prisma.user.delete({
  where: { email: "alice@example.com" }
});
console.log("사용자가 삭제되었습니다.");
  • delete()는 특정 데이터를 삭제합니다.

🔹 여러 개의 데이터 삭제 (deleteMany)

await prisma.user.deleteMany({
  where: { name: "Charlie" }
});
console.log("Charlie 데이터를 삭제했습니다.");
  • deleteMany()를 사용하면 여러 개의 데이터를 한 번에 삭제할 수 있습니다.

6. 추가 기능: 필터링, 정렬, 페이지네이션

Prisma Client는 다양한 검색 옵션을 제공합니다.

🔹 필터링 (AND, OR, NOT)

const users = await prisma.user.findMany({
  where: {
    AND: [
      { name: { contains: "A" } },
      { email: { endsWith: "@example.com" } }
    ]
  }
});
console.log("필터링된 사용자:", users);
  • AND 조건을 사용하면 여러 조건을 동시에 만족하는 데이터를 검색할 수 있습니다.
  • contains, endsWith 등 다양한 조건 연산자를 사용할 수 있습니다.

🔹 정렬 (Order By)

const users = await prisma.user.findMany({
  orderBy: { name: "asc" }
});
console.log("정렬된 사용자 목록:", users);
  • orderBy 옵션을 사용하여 오름차순(asc) 또는 내림차순(desc) 정렬이 가능합니다.

🔹 페이지네이션 (Skip & Take)

const users = await prisma.user.findMany({
  skip: 5, // 처음 5개 건너뛰기
  take: 10 // 이후 10개 가져오기
});
console.log("페이지네이션 결과:", users);
  • skip과 take를 함께 사용하여 페이지 단위로 데이터를 조회할 수 있습니다.

7. 결론

Prisma Client를 활용하면 간결한 코드로 데이터베이스를 조작할 수 있으며, 타입 안전성을 보장하여 코드의 안정성을 높일 수 있습니다.
이번 글에서는 CRUD 연산을 Prisma Client로 구현하는 방법과 다양한 필터링 및 정렬 기능을 다루었습니다.

다음 글에서는 Prisma Migrate를 사용한 데이터베이스 스키마 변경 및 마이그레이션 관리 방법을 소개하겠습니다! 🚀

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함
반응형