DDL
- Spring JPA에서 DDL(Data Definition Language)은 데이터베이스 스키마를 생성하거나 변경하는 SQL 명령을 의미
- DDL에는 보통 'CREATE', 'ALTER', 'DROP' 등의 명령어가 포함됨
- Spring Boot에서 JPA를 사용할 때, 'spring.jpa.hibernate.ddl-auto' 라는 설정 속성을 통해 Hibernate가 어떻게 DDL 명령을 실행할지를 정의할 수 있음
ddl-auto 옵션 종류
- create: 기존테이블 삭제 후 다시 생성 (DROP 후에 CREATE)
- create-drop: create와 같으나 종료시점에 테이블 DROP (테스트 코드 실행 시 주로 사용)
- update: 변경분만 반영, 추가만 반영되고 삭제는 반영되지 않는다. (DB Lock을 방지하기 위해 운영DB에서는 사용하면 안된다.)
- validate: DDL 변경을 수행하지 않고, 엔티티와 테이블이 올바르게 매핑되었는지만 확인
- none: ddl 자동생성 기능을 사용하지 않음, ddl-auto 옵션을 주석처리 한 것과 같다. (사실상 없는 값이지만 관례상 none이라고 한다.)
DDL 자동 생성 기능 사용 시 주의 사항
실제 운영 환경에서는 none 또는 validate 옵션을 사용
- create, create-drop, update 옵션을 사용하면 테이블 변경이 자동으로 반영되어 데이터 손실 위험이 있기 때문
개발 초기 단계는 create 또는 update 옵션을 사용
- 개발 초기 단계의 특성상 코드와 데이터베이스 테이블이 자주 변경된다.
- 따라서 개발 초기 단계에서 create 또는 update 옵션을 사용하여 테이블을 빠르게 반영하고 관리해 개발 효율성을 높일 수 있다.
테스트 서버는 update 또는 validate 옵션을 사용
- 테스트 서버에서는 개발 과정에서의 오류를 찾기 위해 실제 상황과 가까운 환경을 구축하므로
- 자동으로 데이터베이스 테이블을 관리하면서도 실제 데이터 손실 위험을 최소화하여 Entity와 데이터베이스 스키마 간의 무결성을 유지하고 테스트 환경에서 문제를 빠르게 발견해야 한다.
참고 자료
https://hstory0208.tistory.com/entry/JPA-데이터베이스-초기화-전략-ddl-auto-옵션
'Development > Spring' 카테고리의 다른 글
[Spring] 엔티티 (Entity) (0) | 2024.01.24 |
---|---|
[Spring] JPA (Java Persistence API), Hibernate, Spring Data JPA (1) | 2024.01.23 |
[Spring] 스프링 부트의 동작 방식 (0) | 2024.01.15 |
[Spring] 스프링 부트란? (0) | 2024.01.15 |
[Spring] JSP/Servlet부터 Spring, 그리고 Springboot 까지 (0) | 2024.01.07 |