1. ddl-auto 옵션
ddl-auto 옵션은 Spring Boot Application에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정이다. 이 옵션은 application.properties, application.yml 같은 설정 파일에서 설정할 수 있다. ddl-auto 옵션에는 none, validate, update, create, create-drop 등이 있다.
2. 각 옵션들 정리
2 - 1. none
- 데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않는다.
- 데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하다.
- 프로덕션 환경에서 주로 사용된다.
2 - 2. validate
- 애플리케이션이 시작될 때, 엔티티 매핑이 데이터베이스 스키마와 일치하는지 검증한다.
- 스키마 변경은 따로 수행하지 않는다.
- 프로덕션 환경에서 엔티티와 데이터베이스 스키마가 일치하는지 확인하고 싶을 때 사용한다.
2 - 3. update
- 엔티티 매핑과 데이터베이스 스키마를 비교하여 필요한 경우 스키마를 업데이트한다.
- 엔티티에 변경이 발생할 때 자동으로 스키마를 업데이트하고 싶을 때 유용하다.
- 프로덕션 환경에서는 주의해서 사용해야 하며, 개발 환경에서 주로 사용한다.
2 - 4. create
- 애플리케이션이 시작될 때 기존 스키마를 삭제하고 새로 생성한다.
- 데이터가 모두 삭제되며 엔티티 매핑을 기반으로 새로운 스키마가 생성된다.
- 프로덕션 환경에서는 절대 사용해서는 안되고, 개발 환경에서 주로 사용한다.
2 - 5. create-drop
- create와 유사하지만, 애플리케이션이 종료될 때 스키마를 삭제한다는 점이 다르다.
- 프로덕션 환경에서는 절대 사용해서는 안된다.
- 개발 환경, 테스트 환경에서 주로 사용된다.
3. 프로덕션 환경에서 스키마 변경은 어떻게 해야할까?
스키마 변경이 필요할 때는 데이터베이스 마이그레이션 도구(Flyway, Liquibase 등)를 사용하여 스키마를 관리하거나, 사용자가 없는 새벽에 스키마 변경 작업을 수동으로 진행하는 것이 안전하다.
3 - 1. Flyway vs Liquibase
Flyway, Liquibase 모두 각각 장단점이 있으므로,
프로젝트의 요구사항과 환경에 따라 적절한 도구를 선택하면 된다.
References
https://www.maeil-mail.kr/question/28
https://lazypazy.tistory.com/258
https://shiba-holic.tistory.com/26
https://spring.io/projects/spring-data-jpa
'백엔드 면접 질문' 카테고리의 다른 글
일급 컬렉션이 무엇인가요? (1) | 2024.11.29 |
---|---|
자바에서 Checked Exception과 Unchecked Exception에 대해서 설명해주세요. (0) | 2024.11.28 |
JPA의 N + 1 문제에 대해서 설명해주세요 (1) | 2024.11.27 |
Entity Manager에 대해 설명해주세요. (0) | 2024.11.26 |
Spring Data JPA에서 새로운 Entity인지 판단하는 방법은 무엇일까요? (0) | 2024.11.22 |