[java] Flyway의 스크립트를 사용하여 Java 애플리케이션의 초기 데이터 삽입하기

Flyway는 데이터베이스 마이그레이션 도구로서, Java 애플리케이션에서 데이터베이스 스키마 및 초기 데이터를 관리하는 데 도움을 줍니다. 이 글에서는 Flyway를 사용하여 Java 애플리케이션에 초기 데이터를 삽입하는 방법에 대해 알아보겠습니다.

Flyway 설정

먼저, Flyway를 Java 프로젝트에 설정해야 합니다. 프로젝트의 Maven 또는 Gradle 설정 파일에 Flyway 의존성을 추가합니다. 아래는 Maven 프로젝트 설정 파일 (pom.xml)의 예시입니다.

<dependencies>
  <!-- Flyway 의존성 추가 -->
  <dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>7.14.0</version>
  </dependency>
  
  <!-- 데이터베이스 드라이버 의존성 추가 -->
  <!-- 데이터베이스 종류에 따라 적절한 드라이버를 추가해야 합니다 -->
</dependencies>

스크립트 작성

Flyway는 데이터베이스 마이그레이션 스크립트를 실행하여 스키마를 생성하고 초기 데이터를 삽입할 수 있습니다. 스크립트는 src/main/resources/db/migration 폴더에 생성하며, 형식은 V<버전>__<설명>.sql 입니다. 예를 들어, V1__Insert_Initial_Data.sql과 같이 파일을 작성할 수 있습니다.

작성한 스크립트에는 데이터 삽입을 위한 SQL 문을 작성합니다. 예를 들어, 다음과 같이 사용자 테이블에 초기 데이터를 삽입하는 스크립트를 작성할 수 있습니다.

INSERT INTO users (name, email) VALUES ('John Doe', 'johndoe@example.com');
INSERT INTO users (name, email) VALUES ('Jane Smith', 'janesmith@example.com');

Flyway 실행

Flyway를 실행하여 데이터베이스에 스키마를 생성하고 초기 데이터를 삽입할 수 있습니다. 이를 위해 Java 애플리케이션의 실행 시점에 Flyway를 초기화하고 마이그레이션을 실행하는 코드를 작성해야 합니다. 아래는 Flyway를 초기화하고 마이그레이션을 실행하는 Java 코드의 예시입니다.

import org.flywaydb.core.Flyway;

public class Application {
    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();
        
        // 애플리케이션 로직 실행
        // ...
    }
}

위의 코드에서 dataSource 메서드의 인자로 데이터베이스 접속 URL, 사용자명, 비밀번호를 설정해야 합니다. locations 메서드는 마이그레이션 스크립트의 위치를 설정하는데, 위에서 언급한 src/main/resources/db/migration 경로와 동일하게 설정해야 합니다.

실행 결과 확인

Flyway가 실행될 때, 데이터베이스 스키마가 생성되고 초기 데이터가 삽입됩니다. 이 후에는 Flyway가 이미 적용된 마이그레이션은 무시하고 변경된 마이그레이션이 있을 경우에만 적용됩니다.

이상으로 Flyway를 사용하여 Java 애플리케이션의 초기 데이터를 삽입하는 방법을 알아보았습니다. Flyway는 데이터베이스 마이그레이션을 효과적으로 관리할 수 있는 도구이며, 초기 데이터 삽입 외에도 다양한 기능을 제공합니다. 더 자세한 내용은 Flyway 공식 문서를 참고하시기 바랍니다.