[Spring] ddl-auto 옵션

지인·2023년 8월 7일
0

Spring

목록 보기
19/20

🐰 ddl-auto

데이터베이스 스키마를 자동으로 생성, 수정 또는 삭제하는 기능

ddl-auto 옵션 종류

  • create : 기존테이블 삭제 후 다시 생성 (DROP + CREATE)

  • create-drop: create : create와 같으나 종료 시점에 테이블 DROP

  • update : 변경분만 반영 (운영DB 에서는 사용하면 안됨)

  • validate : 엔티티와 테이블이 정상 매핑되었는지만 확인

  • none : 사용하지 않음 (사실상 없는 값이지만 관례상 none이라고 한다.)


⭐ 주의할 점

  • 운영 장비에서는 절대 create, create-drop, update 사용하면 안된다.

  • 개발 초기 단계는 create 또는 update

  • 테스트 서버는 update 또는 validate

  • 스테이징과 운영 서버는 validate 또는 none


평소 update를 사용한다. 엔티티의 필드를 삭제한후 실제 테이블을 확인하면 반영되지 않는다. 이유를 알아보자!!

문제 원인

update의 특성

  • update 옵션이 엔티티 상태에 따라 테이블을 수정하는 옵션이기 하지만, 칼럼 삭제의 경우에는 해당되지 않는다.
  • 즉 ddl-auth=update 를 통해 칼럼을 삭제할 수 없다.

왜?

  • 이러한 동작은 의도된 설계이다.

  • 왜냐하면, 레거시 DB를 사용할 수 있도록 허용한 것이기 때문이다.

  • 즉 과거에 사용하던 DB를 사용할 수 있도록 설계된 사항이다.

해결 방안

  1. ddl-auto=create-drop 을 사용한다.

  2. 직접 SQL을 작성하여 칼럼 삭제한다.

  3. 파일을 DROP 시키고 다시 빌드한다.

profile
열쩡

0개의 댓글