WEBBOOK CHAPTER

Spring Boot 4.1, 시작부터 런칭까지: 27장. JDBC로 숨김 없는 저장 계층을 만든다

27장. JDBC로 숨김 없는 저장 계층을 만든다

예제는 SQL과 transaction을 보이기 위해 JDBC를 기본으로 한다. row mapper는 DB nullable과 Java type을 명확히 변환하고, select * 대신 필요한 열을 명시한다. pagination은 created_at desc, id desc처럼 안정적인 순서를 쓴다. offset이 커지면 keyset pagination을 검토한다.

인계 상세은 handoff 한 행, risk 여러 행, acknowledgement 여러 행을 읽는다. 반복 query로 N+1을 만들지 않고 정해진 두세 query 뒤 application에서 조립하거나 projection query를 쓴다. EXPLAIN (ANALYZE, BUFFERS)는 production 복제 데이터에서 실행하며 실제 운영 write에 영향을 주지 않게 한다. 예상 row와 실제 row 차이가 크면 index 추가 전에 통계와 조건 선택도를 본다.

repository 통합 테스트는 PostgreSQL container에서 migration을 처음부터 적용한다. 같은 shift와 external key의 unique, status check, FK 삭제 정책, timestamp 정밀도를 실제 DB로 확인한다. H2 통과를 PostgreSQL 통과로 간주하지 않는다.