데이터베이스 접근 계층의 이해
Raw Query에서 ORM까지 — 그리고 그 너머의 설계 이야기
데이터베이스에 접근하는 방식은 시간이 지나며 계속 진화해왔다.
이 책은 그 진화의 흐름을 따라가며, 각 방식의 본질과 한계,
그리고 실무에서 어떻게 함께 쓰이는지를 다룬다.
기술 자체가 아니라 상황에 맞는 선택의 관점에서 풀어낸 책이다.
책의 구성
1부. 데이터베이스 접근 방식의 변천
데이터 접근 방식이 어떻게 발전해왔는지를 다룬다.
하나의 방식이 다른 방식을 대체한 것이 아니라,
각자의 역할로 남아 있다는 것이 핵심이다.
| 장 | 제목 | 핵심 내용 |
|---|---|---|
| 1장 | 데이터베이스 접근 방식의 시작 | SQL을 코드에 섞어 쓰는 방식이 만드는 문제들 |
| 2장 | Raw Query 중심 접근 | 가장 직접적인 접근 방식의 장점과 한계 |
| 3장 | Query Builder의 등장 | 문자열에서 구조로 — SQL을 다루는 새로운 방법 |
| 4장 | ORM(Object Relational Mapping) | SQL에서 객체로 — 데이터 접근의 추상화 |
| 5장 | 현실적인 선택 | 셋을 함께 쓰는 혼합 전략 |
2부. 데이터 접근 계층의 설계
기술을 골랐다고 끝이 아니다.
이를 코드 안에 어떻게 배치하고, 어떤 문제를 의식하며 다뤄야 하는지를 다룬다.
| 장 | 제목 | 핵심 내용 |
|---|---|---|
| 6장 | 아키텍처 관점에서의 DB 접근 계층 | Controller / Service / Repository 계층 설계 |
| 7장 | N+1 문제와 데이터 로딩 전략 | ORM의 가장 흔한 함정과 해결 패턴 |
| 8장 | 트랜잭션과 데이터 일관성 | 트랜잭션을 어느 계층에서 관리할 것인가 |
| 9장 | 페이지네이션과 대용량 조회 | Offset vs Cursor — 조회 전략의 선택 |
| 10장 | 마치며 — 좋은 데이터 접근 코드란 | 도구가 아니라 시야에 대한 이야기 |
흐름 한눈에 보기
[1부] 기술의 변천
1장. 문제의 시작
↓
2장. Raw Query (직접 제어)
↓
3장. Query Builder (구조적 개선)
↓
4장. ORM (객체 기반 추상화)
↓
5장. 혼합 전략 (상황에 맞는 선택)
[2부] 계층의 설계
6장. 계층 구조
↓
7장. N+1 문제 (조회 함정)
↓
8장. 트랜잭션 (저장 흐름)
↓
9장. 페이지네이션 (대용량 조회)
↓
10장. 마치며
누가 읽으면 좋은가
- 데이터 접근 코드를 처음 짜기 시작한 개발자
- ORM을 쓰고 있지만 내부 동작이 궁금한 개발자
- Raw Query와 ORM 사이에서 고민하는 개발자
- 데이터 접근 계층을 설계해야 하는 개발자
이 책이 다루지 않는 것
- 특정 ORM(Prisma, TypeORM 등)의 상세 문법
- 데이터베이스 튜닝과 인덱스 설계
- 분산 트랜잭션(2PC, Saga 등)
- 마이그레이션 도구의 사용법
예제는 TypeScript와 Prisma / Knex / Raw SQL을 사용하지만,
이야기의 본질은 언어와 도구에 종속되지 않는다.