많은 Java 애플리케이션에서는 데이터베이스 스키마의 변경이 필요한 경우가 종종 발생합니다. 이때 데이터베이스 마이그레이션 도구인 Flyway를 사용하면 편리하게 스키마 변경을 관리할 수 있습니다. Flyway는 버전 관리 시스템과 같은 방식으로 데이터베이스 스키마의 변경 내역을 추적하고 적용합니다.
이번 글에서는 Java 애플리케이션에서 Flyway를 이용하여 데이터베이스 마이그레이션을 수행하는 방법을 알아보겠습니다.
개요
Flyway는 데이터베이스 스키마 변경에 대한 마이그레이션 스크립트를 작성하고 실행하는 도구입니다. 스크립트는 버전이나 타임스탬프로 구분되며, Flyway는 이를 이용하여 마이그레이션의 순서를 보장합니다. 또한, Flyway는 이미 마이그레이션된 스크립트를 자동으로 스킵하고, 변경된 스크립트만 실행하므로 안전하게 마이그레이션을 수행할 수 있습니다.
설치
Flyway를 사용하기 위해서는 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml
파일에 다음 의존성을 추가하시면 됩니다:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>7.10.2</version>
</dependency>
Gradle을 사용하는 경우, build.gradle
파일에 다음 의존성을 추가하시면 됩니다:
implementation 'org.flywaydb:flyway-core:7.10.2'
사용 방법
Flyway를 사용하는 가장 기본적인 방법은 마이그레이션 스크립트를 src/main/resources/db/migration
디렉토리에 작성하는 것입니다. 이 디렉토리에는 각각의 마이그레이션 스크립트를 위한 디렉토리가 더 있을 수 있습니다.
마이그레이션 스크립트는 SQL로 작성되며, Flyway가 자동으로 실행합니다. 스크립트 파일은 다음과 같은 형식으로 작성되어야 합니다:
V{버전 또는 타임스탬프}__{스크립트_이름}.sql
예를들어, V1.0__create_table.sql
과 같은 이름을 가진 스크립트 파일은 버전 1.0의 마이그레이션 스크립트임을 나타냅니다.
Flyway를 사용하는 Java 애플리케이션에서는 다음과 같이 Flyway 인스턴스를 생성하고 마이그레이션을 실행할 수 있습니다:
import org.flywaydb.core.Flyway;
public class Main {
public static void main(String[] args) {
// Flyway 인스턴스 생성
Flyway flyway = Flyway.configure()
.dataSource("jdbc:mysql://localhost:3306/mydb", "username", "password")
.locations("classpath:db/migration")
.load();
// 마이그레이션 실행
flyway.migrate();
}
}
위 예제에서는 MySQL 데이터베이스를 사용하여 Flyway 인스턴스를 생성하고, classpath:db/migration
위치에 있는 마이그레이션 스크립트를 실행하도록 설정했습니다.
추가 설정
Flyway는 다양한 추가 설정을 제공하여 마이그레이션을 조정할 수 있습니다. 몇 가지 주요 설정 옵션을 살펴보겠습니다:
baselineOnMigrate
: 마이그레이션을 시작하기 전에 기준선 마이그레이션을 수행할지 여부를 설정합니다.validateOnMigrate
: 마이그레이션을 실행하기 전에 데이터베이스를 유효성 검사할지 여부를 설정합니다.placeholders
: 마이그레이션 스크립트에서 사용할 수 있는 placeholder 값을 설정합니다.table
: Flyway 내부적으로 사용하는 마이그레이션 상태 테이블의 이름을 설정합니다.sqlMigrationPrefix
: SQL 마이그레이션 스크립트 파일 이름의 접두사를 설정합니다.
Flyway의 기타 설정 옵션에 대해서는 공식 문서를 참고하시기 바랍니다.
결론
Flyway를 사용하면 Java 애플리케이션의 데이터베이스 마이그레이션을 효율적으로 관리할 수 있습니다. Flyway를 사용하여 마이그레이션 스크립트를 작성하고 실행하는 방법에 대해 알아보았습니다. Flyway의 강력한 기능과 설정 옵션들을 잘 활용해서 데이터베이스 변경을 안전하게 관리하세요.