그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록JPA
JPA

JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요?

실무4/5
설계4/5
인간4/5
기초1/5

면접관의 질문 의도

옵션 이름을 외운 사람인지, 환경별 정책과 마이그레이션 도구 분담까지 잡는 사람인지를 가른다.

큐레이션 답변

학습 자료

ddl-auto는 애플리케이션 시작/종료 시 스키마를 어떻게 다룰지 정하는 옵션이다. none은 아무 작업도 하지 않고, validate는 매핑과 실제 스키마가 어긋나면 부팅을 막는다. update는 변경분을 반영하지만 컬럼/테이블 제거는 하지 않아 "부분적으로만 따라간다"는 함정이 있다. create는 시작 시 스키마를 새로 만들고 create-drop은 종료 시점에 삭제까지 한다. 운영에서는 보통 validate/none + Flyway/Liquibase 같은 마이그레이션 도구 조합으로 가고, ddl-auto에 스키마 변경을 맡기지 않는다.

좋은 답변 구조

  1. 01none/validate/update/create/create-drop 다섯 옵션과 판단 축(데이터 보존, 부팅 검증)을 먼저 정리한다
  2. 02각 옵션이 주는 이득(시작 속도, 검증)과 한계(부분 반영, 데이터 삭제 위험)를 균형 있게 짚는다
  3. 03로컬·테스트·스테이징·운영 환경별로 결론이 어떻게 바뀌는지 조건을 말한다
  4. 04Flyway/Liquibase 같은 마이그레이션 도구와의 역할 분담을 최종 기준으로 마무리한다

자주 실수하는 포인트

운영 환경에서도 update를 기본값처럼 사용한다
update가 컬럼 제거는 하지 않는다는 _부분 반영_ 동작을 모른다
create/create-drop의 데이터 삭제 위험을 과소평가한다
마이그레이션 도구와의 역할 분담을 "둘 다 켜놓으면 되겠지"로 뭉뚱그린다

실무 맥락

  • 로컬/테스트/스테이징/운영이 분리된 배포 파이프라인에서 환경별 ddl-auto를 정해야 하는 상황
  • Flyway/Liquibase로 운영 스키마를 관리하면서 부팅 검증만 validate에 맡기는 작업
  • 무중단 배포에서 컬럼 추가/삭제를 어떻게 두 단계로 나눌지 잡는 작업

본인 경험에 녹이는 힌트

운영에서 update가 켜진 채로 컬럼이 의도치 않게 추가되는 사고를 본 적이 있다면 환경별 정책을 어떻게 분리했는지 연결할 수 있다

Flyway/Liquibase로 운영 스키마를 관리하면서 validate만 켜본 적이 있다면 _도구 분담_의 기준으로 답할 수 있다

무중단 배포에서 컬럼 추가-사용-삭제를 두 릴리스로 나눠본 경험이 있다면 ddl-auto에 맡기지 않는 이유를 보여주는 후크가 된다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1validate와 none 중 운영 기본값을 어떻게 정하나요
Q2update를 써도 안전한 제한적 상황이 있나요
Q3마이그레이션 실패 시 롤백 전략은 어떻게 가져가나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문