Jpa의 인터페이스 중 하나인 hibernate는 entity만 등록해놓으면 데이터 베이스 ddl을 자동으로 작동하여 테이블을 생성, 수정할 수 있다.
Entity에 테이블을 매핑하면 쿼리문을 사용하지 않고 ddl-auto 옵션을 사용하면 값 추출이 가능하다.
ddl-auto의
create, crate-drop, update, validate, none(default) : 종류
Spring.jpa.hibernate.ddl-auto="종류" : 사용 방법
이 옵션은 application.properties 또는 application.yml 파일에서 설정할 수 있으며,
none : 설정하면 데이터베이스 스키마와 관련한 어떠한 작업도 수행하지 않는다 -> 이 경우 데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하며 프로덕션 환경에서 주로 사용됨.
validate : 애플리케이션이 시작될 때, 엔티티 매핑이 데이터베이스 스키마와 일치하는지 검증하며 스키마 변경은 따로 수행하지 않는다.
프로덕션 환경에서 엔티티와 데이터베이스 스키마가 일치하는지 확인하고 싶을 때 사용
update : 엔티티 매핑과 데이터베이스 스키마를 비교하여 필요한 경우 스키마를 업데이트, 기존 데이터는 유지되지만, 새로운 엔티티나 변경된 엔티티 필드는 스키마에 반영.
create : 애플리케이션이 시작될 때 기존 스키마를 삭제하고 새로 생성, 데이터는 모두 삭제되며 엔티티 매핑을 기반으로 새로운 스키마가 생성, 개발 초기 빈 데이터베이스 스키마를 반복적으로 생성해야 할 때 유용함. 기존 데이터가 모두 삭제되므로 프로덕션 환경에서 사용하지 않음.
create-drop : create와 유사하지만, 애플리케이션이 종료될 때 스키마를 삭제한다는 점이 다름. 해당 옵션은 테스트 환경에서 일시적인 데이터베이스 스키마가 필요한 경우 유용함. 매 테스트 실행 시마다 깨끗한 데이터베이스 상태를 유지하고자 할 때 사용.
스키마 변경이 필요할 때는 적절한 데이터베이스 마이그레이션 도구 (flyway, liquibase 등) 사용하여 제어된 방식으로 스키마를 관리하거나, 사용자가 없는 새벽에 스키마 변경 작업을 수동으로 진행하는 것이 더욱 안전할 수 있음.
[기술면접][매일메일] 일급 컬렉션이 무엇인가요? (0) | 2025.03.07 |
---|---|
[JAVA] 자바에서 Checked Exception과 Unchecked Exception에 대해서 설명해주세요 (0) | 2025.03.06 |
[Spring] Jpa의 N+1 문제에 대해서 설명해주세요 (0) | 2025.03.06 |
[기술 / 면접][매일메일] 엔티티 매니저에 대해 설명해주세요 (0) | 2025.03.04 |
[Spring] Spring data jpa에서 새로운 entity인지 판단하는 방법은 무엇일까? (0) | 2025.03.03 |