◆ PART · DB

카멜 ↔ 스네이크 함정

Spring 기초
SMHRD

학습 목표

1. 문제

"분명히 SELECT 했는데 객체에 데이터가 안 들어와요. 모두 null 이에요!"

2. 새 도구

이름 규칙의 차이: DB 는 user_id (스네이크), 자바는 userId (카멜). 둘이 자동으로는 매핑 안 됨.

3. 코드

-- DB (일반 예시) CREATE TABLE sample ( user_id VARCHAR(50), -- 스네이크 created_at TIMESTAMP ); // 자바 VO public class Sample { private String userId; // 카멜 private LocalDateTime createdAt; } -- 결과: SELECT 해도 userId, createdAt 이 null // 해법 1: AS 로 매핑 SELECT user_id AS userId, created_at AS createdAt FROM sample // 해법 2: 글로벌 설정 (권장) <!-- mybatis-config.xml --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>

4. 정리

5. Before / After

전 차시

"분명히 SELECT 했는데 객체에 데이터가 안 들어와요. 모두 null 이에요!"

이번 차시

null 이 되는 함정을 만나면 어디를 의심할지 안다.

학습 확인 체크리스트