Database/flyway

flyway-spring boot 연동

최-코드 2024. 11. 30. 01:45

의존성 : 초기 프로젝트 의존성을 설정할 때 flyway migration을 검색하여 등록하면 아래와 같이 등록된다.

implementation 'org.flywaydb:flyway-core'

 

마이그레이션 파일 위치 : resources/db/migration에 위치시키면 된다. 이는 기본 경로로 변경할 수 있지만, 기본 경로를 사용하는 것이 더 효율적이다.

 

Flyway Migration Creation

  • 이는 인텔리제이 IDE 내에 있는 플러그인으로 꼭 install하자. 이를 통해 마이그레이션 파일을 손쉽게 생성할 수 있다.
  • 파일명을 생성할 때 파일 설명, description만 적어주면 되는데 이 때, 언더바 없이 띄어쓰기를 써도 무방하다.
  • 파일의 버전은 파일을 생성한 날짜, 시간으로 설정해준다.
  • 예를 들어 파일명을 "init table"라고 입력하면 자동으로 V20241130TTMMSS__init_table.sql로 만들어준다.
  • 파일 생성할 시에 Flyway Migration/Versioned migration을 통해 진행해야 한다.

실수 방지

  • ddl-auto를 validate로 설정하면 현재 flyway로 설정된 테이블과 코드 내의 entity 간의 스키마 차이를 오류로 발생시킬 수 있다. 따라서 flyway를 사용할 때 발생할 실수를 방지할 수 있는 방법 중 하나이다.
  • 테이블을 만들 때 create table if not exists와 같이 해주자. 여러 사람이 작업하다보면 create를 여러 번 할 수도 있는데 그러면 flyway가 오류를 내뱉는다.

application 설정 파일

flyway:
  baseline-on-migrate: true
  out-of-order: true
  • baseline-on-miograte: true로 설정하면 기존의 데이터베이스에 마이그레이션을 적용할 때 기준점을 설정하는 기능으로, flyway_schema_history 테이블이 없을 시 자동으로 생성해준다.
  • out-of-order: true로 설정하면 먼저 마이그레이션 파일을 만들었는데 나중에 만들어진 마이그레이션 파일보다 나중에 커밋할 경우 충돌이 나는 것을 방지해주는 옵션이다.