[java] Flyway를 사용하여 Java 애플리케이션의 데이터베이스 동기화 전략

Flyway는 데이터베이스 스키마의 버전 관리와 마이그레이션을 지원하는 오픈 소스 도구입니다. Flyway를 사용하면 Java 애플리케이션의 데이터베이스를 쉽게 생성하고 업데이트할 수 있습니다.

1. Flyway 설정

Flyway를 사용하려면 먼저 Maven 또는 Gradle과 같은 빌드 도구에 Flyway 종속성을 추가해야 합니다. 다음은 Maven을 사용하는 경우 pom.xml 파일에 필요한 종속성을 추가하는 예입니다.

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

2. 디렉토리 구조

Flyway는 마이그레이션 스크립트를 실행하기 위해 일정한 디렉토리 구조를 요구합니다. 프로젝트의 리소스 폴더에 db/migration 폴더를 생성하세요. 이 폴더는 Flyway가 마이그레이션 스크립트를 찾아 실행할 위치입니다.

└── src
    └── main
        └── resources
            └── db
                └── migration

3. 마이그레이션 스크립트 작성

db/migration 폴더에 마이그레이션 스크립트를 작성합니다. 이 스크립트는 데이터베이스의 상태를 변경하는 SQL 구문을 포함해야 합니다. 각 마이그레이션 스크립트는 버전 번호로 시작해야 하며, Flyway는 이 순서에 따라 스크립트를 실행합니다.

예를 들어, V1__create_table.sql 파일을 작성해보겠습니다:

CREATE TABLE IF NOT EXISTS example_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

4. 애플리케이션에서 Flyway 사용

Java 애플리케이션에서 Flyway를 사용하려면 Flyway 객체를 생성하고 데이터베이스에 대한 설정을 구성해야 합니다. 다음은 Spring Boot를 사용하는 경우, application.properties 파일에 Flyway 관련 설정을 추가하는 예입니다:

# 데이터베이스 연결 설정
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password

# Flyway 설정
spring.flyway.locations=classpath:db/migration
import org.flywaydb.core.Flyway;

public class Application {
    public static void main(String[] args) {
        Flyway flyway = Flyway.configure().dataSource("jdbc:mysql://localhost:3306/mydb", "root", "password").load();
        // 마이그레이션 실행
        flyway.migrate();
        // ...
    }
}

5. 데이터베이스 업데이트

Flyway는 애플리케이션을 시작할 때 db/migration 폴더에 있는 마이그레이션 스크립트를 검사하고, 아직 실행되지 않은 스크립트를 순서대로 실행합니다. 이렇게 하면 데이터베이스 스키마가 애플리케이션과 동기화됩니다. 이미 실행된 마이그레이션 스크립트는 Flyway가 사용하여 트래킹하므로, 다시 실행되지 않습니다.

마이그레이션 스크립트를 추가하거나 수정하면 Flyway가 자동으로 새로운 스크립트를 인식하고 실행합니다.

Flyway를 사용하여 Java 애플리케이션의 데이터베이스 동기화 전략을 구성하는 방법을 알아보았습니다. Flyway를 사용하면 데이터베이스 스키마를 쉽게 버전 관리하고 업데이트할 수 있습니다.

참고 자료