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

이번 블로그 포스트에서는 Flyway를 사용하여 Java 애플리케이션의 데이터베이스 동기화를 어떻게 수행할 수 있는지 알아보겠습니다. Flyway는 데이터베이스 스키마의 버전 관리 및 마이그레이션 도구로, 애플리케이션과 데이터베이스의 버전을 일치시킬 수 있습니다.

Flyway란?

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에 다음과 같이 의존성을 추가합니다.

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

데이터베이스 설정

Flyway를 사용하기 위해선 데이터베이스에 대한 설정이 필요합니다. application.properties 또는 application.yml 파일에 데이터베이스 연결 정보를 추가합니다.

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=your_username
spring.datasource.password=your_password

마이그레이션 파일 생성

Flyway는 버전 관리를 위해 마이그레이션 파일을 사용합니다. 마이그레이션 파일은 SQL 스크립트이며, 스키마 변경 내용을 담고 있습니다. 예를 들어, V1__create_table.sql 파일에는 테이블 생성 쿼리가 포함될 수 있습니다.

마이그레이션 파일의 네이밍 규칙은 V{버전번호}__{이름}.sql 형식을 따릅니다. 버전번호는 숫자로 이루어져야 하며, 이름은 파일에 대한 설명을 나타냅니다.

마이그레이션 실행

Flyway는 자동으로 데이터베이스 마이그레이션을 수행합니다. 애플리케이션을 실행할 때마다 Flyway는 데이터베이스의 상태를 확인하고, 변경된 마이그레이션 파일을 실행합니다.

마이그레이션 파일을 생성했다면, 애플리케이션을 시작해보세요. Flyway는 초기화와 버전 관리를 자동으로 처리하여 데이터베이스를 원하는 상태로 유지합니다.

롤백

Flyway를 사용하면 마이그레이션 롤백 기능도 제공됩니다. 롤백은 이전 버전의 마이그레이션 파일을 실행하여 데이터베이스를 이전 상태로 되돌릴 수 있습니다.

$ mvn flyway:rollback

위 명령을 실행하면 가장 최근에 실행된 마이그레이션 파일이 롤백됩니다.

결론

Flyway를 사용하면 Java 애플리케이션의 데이터베이스를 쉽게 동기화할 수 있습니다. Flyway의 간단한 설정과 마이그레이션 파일을 생성하면 데이터베이스 스키마의 버전을 일치시킬 수 있습니다.

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