[java] Flyway와 Java 프로젝트의 데이터베이스 데이터 무결성 전략

개요

Flyway는 데이터베이스 마이그레이션 도구로, 자바 프로젝트에서 데이터베이스 스키마를 관리하고 버전 관리할 수 있게 해줍니다. 이번 블로그 포스트에서는 Flyway를 사용하여 자바 프로젝트의 데이터베이스 데이터 무결성을 유지하는 전략을 알아보겠습니다.

Flyway 설정

먼저, Flyway를 프로젝트에 설정해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다.

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

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
    implementation 'org.flywaydb:flyway-core:7.0.0'
}

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

Flyway에서는 데이터베이스 스키마 변경을 위한 마이그레이션 스크립트를 작성해야 합니다. 마이그레이션 스크립트는 src/main/resources/db/migration 디렉토리에 위치해야 합니다.

아래는 예시 마이그레이션 스크립트입니다.

src/main/resources/db/migration/V1__create_users_table.sql

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

마이그레이션 스크립트 파일의 이름은 V{버전번호}__{설명}.sql 형식을 따라야 합니다. 버전 번호는 마이그레이션 순서를 나타내며, 숫자 앞의 V는 반드시 붙여야 합니다.

데이터베이스 마이그레이션 실행

Flyway는 자동으로 마이그레이션 스크립트를 실행해주는 기능을 제공합니다. 자바 애플리케이션이 시작될 때 Flyway를 초기화하여 마이그레이션 스크립트를 자동으로 실행하도록 설정할 수 있습니다.

import org.flywaydb.core.Flyway;

public class Main {
    public static void main(String[] args) {
        // DataSource 설정
        DataSource dataSource = createDataSource();

        // Flyway 초기화
        Flyway flyway = Flyway.configure()
                .dataSource(dataSource)
                .locations("db/migration")
                .load();

        // 마이그레이션 실행
        flyway.migrate();

        // 어플리케이션 실행
        runApplication();
    }
}

위 코드에서 createDataSource() 메서드는 프로젝트에 맞는 데이터베이스 연결 설정을 생성하는 코드입니다. runApplication() 메서드는 자바 애플리케이션의 실제 실행 로직을 담고 있습니다.

데이터 무결성 유지

Flyway를 사용하여 데이터베이스 스키마를 변경할 때, 데이터 무결성을 유지하는 방법 중 하나는 다음과 같습니다.

  1. 변경할 스키마에 영향을 주지 않는 쿼리만 마이그레이션 스크립트에 작성합니다.
  2. 변경할 스키마에 영향을 주는 쿼리는 마이그레이션 스크립트로 작성하지 않고, 별도의 데이터 마이그레이션 스크립트로 작성합니다.
  3. 데이터 마이그레이션 스크립트는 Flyway를 사용하여 실행되지 않으며, 수동으로 관리되어야 합니다.

이러한 전략을 사용하면 데이터베이스 스키마 변경과 데이터 무결성 유지를 동시에 처리할 수 있습니다.

결론

Flyway를 사용하여 자바 프로젝트의 데이터베이스 데이터 무결성을 유지하는 전략에 대해 알아보았습니다. Flyway는 간편한 데이터베이스 마이그레이션 도구로, 프로젝트의 데이터베이스 스키마 변경에 유용하게 사용될 수 있습니다.

더 자세한 내용은 Flyway 공식 문서를 참고하세요.