JPA의 ddl-auto 옵션에 대해서 설명해 주세요.

2024. 11. 29. 21:43·백엔드 면접

ddl-auto 옵션은 스프링 부트 애플리케이션에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정입니다. 이 옵션은 application.properties 또는 application.yml 파일에서 설정할 수 있으며, 다양한 값에 따라 데이터베이스 스키마에 대해 동작을 수행합니다. 옵션에는 none, validate, update, create, create-drop 등이 있습니다.

 


 

각 옵션에 대해 설명 해주세요.

none은 데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않습니다. 데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하며, 프로덕션 환경에서 주로 사용됩니다.

 

validate는 애플리케이션이 시작될 때, 엔티티 매핑이 데이터베이스 스키마와 일치하는지 검증하며 스키마 변경은 따로 수행하지 않습니다. 프로덕션 환경에서 엔티티와 데이터베이스 스키마가 일치하는지 확인하고 싶을 때 사용합니다.

 

update는 엔티티 매핑과 데이터베이스 스키마를 비교하여 필요한 경우 스키마를 업데이트합니다. 기존 데이터는 유지되지만, 새로운 엔티티나 변경된 엔티티 필드는 스키마에 반영됩니다. 엔티티에 변경이 발생할 때 자동으로 스키마를 업데이트 하고 싶을 때 유용합니다. 프로덕션 환경에서는 예기치 않은 스키마 변경을 방지하기 위해 주의가 필요합니다.

 

create는 애플리케이션이 시작될 때 기존 스키마를 삭제하고 새로 생성합니다. 데이터가 모두 삭제되며 엔티티 매핑을 기반으로 새로운 스키마가 생성됩니다. 개발 초기에 빈 데이터베이스 스키마를 반복적으로 생성해야 할 때 유용합니다. 기존 데이터가 모두 삭제되므로 프로덕션 환경에서는 사용하지 않습니다.

 

create-drop은 create와 유사하지만, 애플리케이션이 종료될 때 스키마를 삭제한다는 점이 다릅니다. 테스트 환경에서 일시적인 데이트베이스 스키마가 필요한 경우 유용하며, 매 테스트 실행 시마다 깨끗한 데이터베이스 상태를 유지하고자 할 때 사용됩니다. 프로덕션 환경에서는 사용하지 않습니다.

 


 

프로덕션 환경에서 스키마 변경은 어떻게 해야하나요?

프로덕션 환경에서 스키마 변경이 필요할 때는 데이터베이스 마이그레이션 도구(Flyway, Liquibase 등)를 사용하여 제어된 방식으로 스키마를 관리하거나, 사용자가 없는 새벽에 스키마 변경 작업을 수동으로 진행하는 것이 더욱 안전할 수 있습니다.

'백엔드 면접' 카테고리의 다른 글

JPA의 N + 1 문제에 대해서 설명해 주세요.  (0) 2024.11.30
엔티티 매니저에 대해 설명해 주세요.  (0) 2024.11.30
Spring Data JPA에서 새로운 Entity인지 판단하는 방법은 무엇일까요?  (0) 2024.11.29
@Value 어노테이션 사용 시 주의할 점을 설명해 주세요.  (0) 2024.11.28
RAID 기술에 대해서 설명해주세요.  (0) 2024.11.28
'백엔드 면접' 카테고리의 다른 글
  • JPA의 N + 1 문제에 대해서 설명해 주세요.
  • 엔티티 매니저에 대해 설명해 주세요.
  • Spring Data JPA에서 새로운 Entity인지 판단하는 방법은 무엇일까요?
  • @Value 어노테이션 사용 시 주의할 점을 설명해 주세요.
이런개발
이런개발
geun-00의 흔적 보관소
  • 이런개발
    내일이 기대되는 오늘
    이런개발
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 백엔드 면접
      • SQL N
        • SUM, MAX, MIN
        • SELECT
        • GROUP BY
        • JOIN
      • Spring
      • JPA
      • 트러블슈팅
      • Infra
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    raid
    티스토리챌린지
    오블완
    JPA
    데브코스
    스프링
    토스 페이먼츠
    백엔드 면접
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
이런개발
JPA의 ddl-auto 옵션에 대해서 설명해 주세요.
상단으로

티스토리툴바