작심삼일

[매일메일] 28. JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요? 본문

스터디/AI 개발자가 공부하는 백엔드

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

yun_s 2025. 5. 1. 20:15
728x90
반응형

이 게시판에서는 매일메일이라는 시스템을 이용해 백엔드를 공부해보고자하는 AI 개발자가 정리해보고자 합니다.

Python이랑 비교하여 이해하기 쉽도록 합니다.

https://www.maeil-mail.kr/question/28

 

매일메일 - 기술 면접 질문 구독 서비스

기술 면접 질문을 매일매일 메일로 보내드릴게요!

www.maeil-mail.kr


용어 및 질문 이해하기 

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

Spring Data JPA를 사용할 때, application.yml 또는 application.properties는 다음과 같이 작성한다.

spring:
  jpa:
    hibernate:
      ddl-auto: update

ddl-auto데이터베이스 테이블을 애플리케이션이 실행될 때 어떻게 자동으로 생성하거나 수정할지 정하는 설정이다.

JPA가 실행되면, 내가 만든 Entity 클래스 구조랑 실제 DB 테이블 구조가 다른 경우가 있을 수 있다.

이 때, 그걸 자동으로 맞춰주는 설정이 ddl-auto다.

 

이를 통해, 애플리케이션이 실행될 때 DB 테이블을

  • 만들지
  • 만들었다가 삭제할지
  • 수정할지
  • 그냥 확인만 할지

를 정할 수 있다.

 


답변

옵션 하는 일 상황
none 아무 것도 안 함 운영 환경에서 사용. 테이블 건드리지 않음
create DB 테이블 싹 다 지우고 새로 만듦 개발 초기, 자주 구조 바꿀 때
create-drop 실행 시 테이블 만들고, 종료 시 삭제 테스트할 때
update 테이블 구조 맞춰줌 (컬럼 추가 등) 개발 중에 자주 사용
validate 테이블 구조가 맞는지만 체크, 안 맞으면 에러 운영 환경에서 안전하게 확인만 하고 싶을 때

 

간단하게 다음과 같이 설명할 수 있다.

  • 운영 환경에선 none이나 validate
  • 개발 환경에선 update
  • 테스트에선 create-drop
  • 완전 초기 개발 할땐 create

 

 

이번에는 이해하기 쉬웠다! 역시 Spring은 좋은 기능이 많이 있다고 생각된다. Pytorch dataset도 저런식으로 정리되면 좋을텐데..

728x90
반응형
Comments