데이터베이스 연동 — Prisma + PostgreSQL 완전 통합
📋 실습 안내
✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기
내 코드 실행 결과
🎯 완성 미리보기
목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기
이번 강의 전용
▼
선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. Prisma에서 개발 환경에서 스키마 변경 후 실행해야 할 올바른 명령어는?
💡 `npx prisma migrate dev`는 마이그레이션 파일을 생성하고 적용한 뒤, 자동으로 `prisma generate`를 실행합니다. 개발 환경에서는 이 명령어 하나면 충분합니다.
Q2. Next.js에서 PrismaClient 싱글톤 패턴을 사용하는 가장 중요한 이유는?
💡 Next.js 개발 환경에서 핫 리로드(HMR)가 발생할 때마다 모듈이 재실행되어 새 PrismaClient 인스턴스가 생성됩니다. DB 연결이 무한히 늘어나는 문제를 globalThis에 인스턴스를 캐싱하는 싱글톤 패턴으로 방지합니다.
Q3. Prisma에서 N+1 쿼리 문제를 해결하는 올바른 방법은?
💡 Prisma의 `include` 옵션은 관련 데이터를 하나의 쿼리(또는 최소한의 쿼리)로 함께 조회합니다. 루프 안에서 개별 조회를 반복하면 N+1 쿼리 문제가 발생하여 성능이 크게 저하됩니다.
Q4. `prisma.$transaction()`의 주요 목적은?
💡 트랜잭션은 여러 DB 작업을 원자적(Atomic)으로 묶어 모두 성공하거나 모두 실패하게 합니다. 결제 처리처럼 잔액 차감과 결제 기록 생성이 하나라도 실패하면 전체를 롤백합니다.
Q5. Prisma의 `upsert` 작업에 대한 올바른 설명은?
💡 `upsert`는 update + insert의 합성어로, where 조건으로 레코드를 찾아 있으면 update 객체로 업데이트하고, 없으면 create 객체로 새 레코드를 생성합니다. 소셜 로그인 유저 저장 등에 유용합니다.
😅
아쉽네요!
점수: 0점 — 70점 이상이 되어야 통과합니다.