Framework/Spring

[Spring] Flyway DB 마이그레이션

JM Lee 2024. 4. 11. 17:02
728x90

DB 마이그레이션이란?

  • 기존 데이터베이스의 스키마와 데이터를 새로운 버전 또는 구조로 이전하는 작업
  • 데이터의 백업, 변환, 이동 등의 작업을 포함
  • 데이터베이스 시스템을 업그레이드하거나 확장
  • 데이터의 일관성과 무결성을 유지하고 새로운 데이터베이스 버전으로 전환
  • 시스템의 안정성과 확장성을 유지

 

동작 흐름

Application Context  Flyway 실행  스키마 생성  hibernate validation(검증) →  적합한 스키마 실행 애플리케이션 실행 완료 

 

 

Flyway는 스프링에서 DB 마이그레이션을 관리하는 오픈소스 도구.

이를 스프링에 적용하기 위해 먼저 Dependency에  Flyway관련 내용을 입력한다.

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

 

application.properties 파일 설정 추가

spring.jpa.hibernate.ddl-auto=validate 
# Hibernate가 데이터베이스 스키마를 자동으로 생성 또는 업데이트할 때의 동작을 지정
spring.jpa.generate-ddl=false
# 애플리케이션을 시작할 때 Hibernate가 데이터베이스 스키마를 검증하여 엔티티 클래스와의 일치 여부를 확인하고,
# 실제로 데이터베이스에는 영향을 주지 않는다는 의미

 

두 속성을 함께 사용하면서 애플리케이션의 데이터베이스 스키마 관리 방식을 정확히 제어하기

 

이후 작업

  • 경로 :  resources > db > migration에 db.migration 생성
  • 마이그레이션 파일 생성
    • 이름 규칙은 V숫자__이름.sql
    • 한번 적용된 SQL 스크립트 파일은 절대 건드려서는 안된다. 새롭게 변경 사항이 있다면 새로운 파일을 생성.