반응형

4.Node.js/Prisma(ORM) 10

[Prisma7] 10편. 쿼리 실패 후 Pool에서 Connection이 제거되는 이유

10편. Prisma 쿼리 실패 후 Pool에서 Connection이 제거되는 이유 📚 목차1. 문제 맥락: 왜 CREATE 실패 시 Connection 이 바로 제거될까?2. pg Pool 내부: _release() 로 보는 Connection 생명주기3. Prisma 7 + PostgreSQL Adapter에서 Pool 사용 구조4. Prisma · Pool · pg-adapter 로깅 코드 예시 1. 문제 맥락: 왜 CREATE 실패 시 Connection 이 바로 제거될까?실제 서비스를 구현하고 테스트하는 과정에서 다음과 같은 패턴을 관찰할 수 있습니다. 일반적으로 connection pool을 사용하는 경우, 쿼리 실행이 완료되면 사용하던 connection은 pool로 반환되어 재사용된다고 ..

[Prisma7] 9편. Node.js + Prisma 에러 종류 및 처리 방법

9편. Node.js + Prisma 에러 종류 및 처리 방법 📚 목차1. Prisma 에러 분류 체계2. 실무에서 가장 많이 발생하는 Prisma 에러 코드 이해하기3. Prisma 에러를 HTTP 에러로 변환하는 예시4. Fastify 레이어별 에러 처리 예시 1. Prisma 에러 분류 체계Prisma는 단순한 ORM이 아니라 DB 접근을 추상화한 클라이언트 레이어입니다.따라서 Prisma에서 발생하는 에러는 대부분 DB 레벨의 문제를 개발자에게 전달한 것에 가깝습니다.즉, Prisma 에러는 그대로 사용자에게 전달할 대상이 아니라, 애플리케이션 레벨의 에러로 변환되어야 하는 신호(signal)라고 이해하는 것이 중요합니다. Prisma에서 발생하는 에러는 크게 네 가지로 분류됩니다분류클래스설명..

[Prisma7] 8편. Prisma 데이터베이스 동기화(Migration & Sync)실습 : 개발 → 운영

8편. Prisma 데이터베이스 동기화(Migration & Sync) 실습 : 개발 → 운영 📚 목차1. Prisma에서 DB 동기화의 핵심 개념2. 개발용 초기 DB 구축 (migrate dev)3. 개발 DB 스키마 변경 관리 방법4. 환경 변수 기반의 안전한 연결 관리와 자동 배포 프로세스 1. Prisma에서 DB 동기화의 핵심 개념Prisma에서 데이터베이스 동기화를 올바르게 이해하려면,“명령어별 역할 분리”와 함께 “schema → migration → DB → Client”의 흐름을 정확히 구분해야 합니다. 🔷 Prisma DB 동기화 명령어 역할 정리명령어환경역할migrate dev개발schema.prisma 변경 사항을 기반으로 마이그레이션 생성 → 개발 DB 반영※ Prisma ..

[Prisma7] 7편. Prisma 트랜잭션과 데이터 정합성: 실무 설계와 구현

7편. Prisma 트랜잭션과 데이터 정합성: 실무 설계와 구현 📚 목차1. 트랜잭션의 역할과 데이터 정합성 전략2. Prisma 트랜잭션의 종류와 사용 시점3. 트랜잭션 고급 제어 옵션과 성능 최적화 전략4. 트랜잭션 기반 다중 CRUD 처리 실습 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /Prisma 1. 트랜잭션의 역할과 데이터 정합성 전략트랜잭션(Transaction)은 여러 개의 데이터베이스 작업을 하나의 논리적 작업 단위로 묶어 처리하는 메커니즘입니다.즉, 다음 조건을 보장합니다.▸ 모두 성공하면 전부 반영(Commit)▸ 하나라도 실패하면 전부 취소(Rollback) 관계형 데이터베이스(PostgreSQL..

[Prisma7] 6편. Prisma로 해결되지 않는 쿼리 다루기: Raw SQL 실전 활용

6편. Prisma로 해결되지 않는 쿼리 다루기: Raw SQL 실전 활용 📚 목차1. $queryRaw: 조회 전용 Raw SQL 다루기2. $executeRaw: 데이터 변경 및 DDL 쿼리 실행하기3. Prisma Raw SQL 보안 : SQL Injection 방지 원리4. Prisma.sql: 유연하고 안전한 동적 쿼리 조립 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /Prisma 1. $queryRaw: 조회 전용 Raw SQL 다루기Prisma Client는 훌륭한 쿼리 빌더를 제공하지만, 때로는 복잡한 통계, Window Function, 혹은 DB 전용 기능을 사용하기 위해 생생한 SQL(Raw SQL)..

[Prisma7] 5편. Prisma 관계 조회 심화: include / select와 중첩 관계 탐색

5편. Prisma 관계 조회 심화: include / select와 중첩 관계 탐색 📚 목차1. include vs select 차이와 실무 선택 기준2. 중첩 관계 트리 조회 (Nested Query)3. 관계 로드 전략 (Relation Load Strategy) 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /Prisma 1. include vs select 차이와 실무 선택 기준Prisma는 SQL처럼 JOIN을 직접 작성하지 않습니다.대신, “어떤 구조의 결과 데이터가 필요한가”를 선언하면 Prisma가 내부적으로 적절한 쿼리를 생성합니다. 🔷 관계 탐색(Relation Traversal)의 실무 적용Prism..

[Prisma7] 4편. 조회 쿼리 고급 옵션(where)과 관계 데이터 생성(create) 패턴 이해

4편. 조회 쿼리 고급 옵션(where)과 관계 데이터 생성(create) 패턴 이해 📚 목차1. 조회 쿼리 고급 옵션 : where / select / include / pagination2. 관계 데이터 생성 패턴 : connect / create / connectOrCreate 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /Prisma 1. 조회 쿼리 고급 옵션 : where / select / include / pagination🔷 where 조건: 정밀한 필터링1) 기본 스칼라 필터 (Boolean / Number / Date) - 예시코드: /ch03/3-1-1.기본스칼라필터.tswhere: { // pub..

[Prisma7] 3편. Prisma Client Query 구조 와 CRUD API 이해하기

3편. Prisma Client Query 구조 와 CRUD API 이해하기 📚 목차1. Prisma Client Query 구조 이해2. CRUD 실전 API : create / read / update / delete / upsert 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /Prisma 1. Prisma Client Query 구조 이해 🔷 Prisma Client 호출의 핵심 구조Prisma 7.x에서도 기본적인 호출 형태는 동일하지만, TypeScript와의 결합이 더욱 견고해졌습니다const result = await prisma.[model].[action]({ [args]});▸ model: Use..

[Prisma7] 2편. schema.prisma 설계 규칙: 필드,제약,인덱스,Relation

2편. schema.prisma 설계 규칙: 필드,제약,인덱스,Relation📚 목차1. schema.prisma 구성과 모델 선언 규칙2. 필드 속성(Attribute)과 제약 설계3. Prisma 스칼라 타입과 PostgreSQL 매핑4. 관계(Relation) 모델링 패턴: 1:1, 1:N, N:M 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /Prisma 1. schema.prisma 구성과 모델 선언 규칙🔷 schema.prisma의 역할과 구성 요소구성요소역할주요 항목GeneratorPrisma Client 등 코드 생성 도구 설정provider, outputDatasource데이터베이스 연결 정보 설정pro..

[Prisma7] 1편. 개발환경 구축과 프로젝트 초기화 (Node.js + Prisma 7)

1편. Prisma 개발환경 구축과 프로젝트 초기화 (Node.js + Prisma 7) 📚 목차1. 개발환경 구축 및 프로젝트 초기화2. DB 연동 및 스키마 설계 (PostgreSQL)3. Prisma 설정 및 싱글톤 클라이언트 구현4. Prisma CLI 주요 명령어 요약 📂 [GitHub 예시 코드 보러가기] (https://github.com/cericube/nodejs-tutorials) /Prisma 1. 개발환경 구축 및 프로젝트 초기화Prisma는 Node.js에서 데이터베이스를 다룰 때, SQL을 직접 작성하는 방식과 비교하여 다음을 제공하는 ORM 계열 도구입니다. ✔️ 개발환경 구축하기Node.js 개발환경 구축하기 : JavaScript, TypeScript, Vitest No..

반응형