[java] Flyway를 사용하여 Java 애플리케이션의 데이터베이스 카달로그 관리하기

Flyway는 데이터베이스 마이그레이션 도구로, 개발자들이 Java 애플리케이션의 데이터베이스 스키마와 데이터를 관리하는 데 도움을 주는 편리한 도구입니다. Flyway를 사용하면 애플리케이션의 데이터베이스 카달로그를 관리하는 과정을 자동화하고, 버전 관리를 통해 데이터베이스 변경 사항을 관리할 수 있습니다.

Flyway 설정

Flyway를 사용하기 위해서는 먼저 프로젝트에 Flyway를 추가해야 합니다. Maven 프로젝트의 경우, pom.xml 파일에 다음 의존성을 추가하면 됩니다.

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

Gradle 프로젝트의 경우, build.gradle 파일에 다음 의존성을 추가합니다.

implementation 'org.flywaydb:flyway-core:7.0.2'

Flyway 마이그레이션 파일 작성

Flyway에서는 마이그레이션 파일을 사용하여 데이터베이스 스키마의 변경 사항을 정의합니다. 마이그레이션 파일은 SQL 스크립트 형식이며, 여러 버전으로 나누어 관리할 수 있습니다. Flyway는 이러한 마이그레이션 파일을 순차적으로 실행하여 데이터베이스를 업데이트합니다.

마이그레이션 파일의 네이밍 컨벤션은 V{버전}_{설명}.sql 형식을 따릅니다. 예를 들어, V1__create_table.sql과 같은 파일은 버전 1의 마이그레이션 파일을 의미합니다.

아래는 간단한 예시 마이그레이션 파일입니다.

-- V1__create_table.sql
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);

Flyway 사용하기

Flyway를 사용하기 위해서는 적절한 위치에 마이그레이션 파일을 추가하고, Flyway 객체를 초기화한 후 마이그레이션을 실행해야 합니다. 아래는 Flyway를 사용하여 데이터베이스를 마이그레이션하는 Java 코드의 예시입니다.

import org.flywaydb.core.Flyway;

public class DatabaseMigration {

    public static void main(String[] args) {
        Flyway flyway = Flyway.configure()
                .dataSource("jdbc:mysql://localhost:3306/mydatabase", "username", "password")
                .locations("classpath:db/migration")
                .load();

        flyway.migrate();
    }
}

위의 코드에서 dataSource 메서드의 첫 번째 인자는 데이터베이스 연결 URL이고, 두 번째와 세 번째 인자는 로그인에 사용될 사용자 이름과 암호입니다. locations 메서드는 마이그레이션 파일이 위치한 경로를 지정합니다.

마이그레이션 실행

Flyway는 마이그레이션 실행 시 데이터베이스의 스키마 변경 사항을 자동으로 추적하고, 변경되지 않은 마이그레이션 파일은 다시 실행하지 않습니다. 따라서 개발자는 Flyway를 사용하여 데이터베이스 스키마를 간단하게 관리할 수 있습니다.

마이그레이션 실행은 Flyway 객체의 migrate 메서드를 호출하여 수행합니다. migrate 메서드를 호출하면 Flyway는 마이그레이션 파일을 로드하고, 데이터베이스를 업데이트합니다.

flyway.migrate();

Flyway는 마이그레이션 실행 전에 데이터베이스의 마이그레이션 히스토리 테이블을 확인하여 어떤 마이그레이션 파일이 이미 실행되었는지 추적합니다. 따라서 이미 실행된 마이그레이션 파일은 건너뛰고, 변경된 마이그레이션 파일만 실행됩니다.

결론

Flyway를 사용하면 Java 애플리케이션의 데이터베이스 카달로그를 손쉽게 관리할 수 있습니다. Flyway를 통해 마이그레이션 파일을 작성하고 실행함으로써 데이터베이스 스키마 변경 사항을 관리할 수 있습니다. Flyway는 데이터베이스 버전 관리를 지원하므로, 여러 버전의 마이그레이션 파일을 순차적으로 실행하여 데이터베이스를 업데이트할 수 있습니다.

Flyway의 공식 문서를 참조하여 보다 자세한 내용을 확인할 수 있습니다. (Flyway 공식 문서)