[java] Flyway를 사용하여 Java 애플리케이션의 데이터베이스 속성 설정하기

Flyway는 데이터베이스 마이그레이션을 관리하기 위한 오픈 소스 라이브러리입니다. Flyway를 사용하면 Java 애플리케이션 내에서 데이터베이스 스키마 및 데이터 속성을 쉽게 설정할 수 있습니다. 이 글에서는 Flyway를 사용하여 Java 애플리케이션의 데이터베이스 속성을 설정하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 및 의존성 추가

Flyway를 사용하기 위해서는 먼저 Maven 또는 Gradle 프로젝트에 해당 라이브러리의 의존성을 추가해야 합니다.

Maven을 사용하는 경우, pom.xml 파일에 다음과 같은 의존성을 추가합니다.

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

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

compile 'org.flywaydb:flyway-core:7.5.4'

의존성을 추가한 후, 빌드 도구를 사용하여 라이브러리를 다운로드하고 프로젝트에 적용합니다.

데이터베이스 연결 설정

Flyway를 사용하여 데이터베이스 속성을 설정하기 전에, 데이터베이스에 대한 연결 정보를 애플리케이션에서 설정해야 합니다. 이를 위해 application.properties 또는 application.yml 파일을 수정합니다. 예를 들어, MySQL 데이터베이스를 사용하는 경우, 다음과 같이 설정할 수 있습니다.

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=myusername
spring.datasource.password=mypassword
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: myusername
    password: mypassword

Flyway는 설정된 데이터베이스 연결 정보를 사용하여 마이그레이션 파일을 실행하고 데이터베이스를 업데이트합니다.

Flyway 마이그레이션 파일 생성

Flyway는 마이그레이션 파일을 사용하여 데이터베이스 스키마와 데이터를 정의합니다. 각각의 마이그레이션 파일은 데이터베이스 업데이트의 한 단계를 나타내며, 순차적으로 실행됩니다.

Flyway 마이그레이션 파일의 명명 규칙은 V{version}_{description}.sql 입니다. version은 마이그레이션 파일의 버전을 의미하며, 순차적인 숫자로 구성됩니다. description은 마이그레이션 파일을 설명하는 문자열입니다.

예를 들어, V1__create_table.sql 파일은 첫 번째 마이그레이션 파일로써 create_table이라는 테이블을 생성하는 SQL 문을 포함할 수 있습니다.

CREATE TABLE my_table (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL
);

Flyway 마이그레이션 실행

Flyway 마이그레이션을 실행하기 위해 Java 애플리케이션에서 다음 코드를 작성합니다.

import org.flywaydb.core.Flyway;

public class DatabaseMigration {
    public static void main(String[] args) {
        // Create Flyway instance
        Flyway flyway = Flyway.configure().dataSource("jdbc:mysql://localhost:3306/mydatabase", "myusername", "mypassword").load();

        // Perform migration
        flyway.migrate();
    }
}

위 코드에서 dataSource 메서드의 인자로 데이터베이스 연결 정보를 전달합니다.

Flyway는 자동으로 마이그레이션 파일을 찾아서 실행하고, 데이터베이스를 업데이트합니다. 이미 실행한 마이그레이션 파일은 Flyway의 메타데이터 테이블에 저장되어 중복 실행을 방지합니다.

결론

Flyway를 사용하여 Java 애플리케이션의 데이터베이스 속성을 설정하는 방법에 대해 알아보았습니다. Flyway를 사용하면 간편하게 데이터베이스 마이그레이션을 관리할 수 있으며, 애플리케이션의 데이터베이스를 손쉽게 업데이트할 수 있습니다.

더 자세한 내용은 Flyway 공식 문서를 참조하십시오.