Flyway는 자바 애플리케이션의 데이터베이스 마이그레이션(Migration)을 쉽게 관리하기 위한 도구입니다. Flyway를 사용하면 데이터베이스의 스키마 변화를 추적하고, 이를 버전 관리하여 애플리케이션과 데이터베이스 사이의 일관성을 유지할 수 있습니다.
Flyway를 사용하여 데이터베이스 접근을 제어하는 방법을 알아보겠습니다.
1. Maven 또는 Gradle에 Flyway 의존성 추가하기
먼저, Maven 또는 Gradle 프로젝트의 의존성에 Flyway를 추가해야 합니다.
Maven:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>7.0.3</version>
</dependency>
Gradle:
implementation 'org.flywaydb:flyway-core:7.0.3'
Flyway의 최신 버전을 사용하기 위해서는 버전 번호를 업데이트해야 합니다.
2. 데이터베이스 마이그레이션 파일 작성하기
Flyway는 migration
디렉토리에 위치한 숫자로 시작하는 SQL 마이그레이션 파일을 실행합니다. 이 파일들은 데이터베이스의 스키마 변화를 기록하는 스크립트로서 사용됩니다.
예를 들어, V1__Create_Table.sql
과 같은 형식으로 마이그레이션 파일을 작성할 수 있습니다. 이 파일은 스키마의 버전을 나타내는 숫자와 언더스코어(__
)로 구분하여 작성합니다.
-- V1__Create_Table.sql
CREATE TABLE my_table (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
3. Flyway 구성하기
Flyway를 사용하기 위해 애플리케이션에서 Flyway를 구성해야 합니다. 일반적으로 애플리케이션의 시작점인 main
메서드를 사용하여 Flyway를 초기화합니다.
import org.flywaydb.core.Flyway;
public class MyApp {
public static void main(String[] args) {
Flyway flyway = Flyway.configure()
.dataSource("jdbc:mysql://localhost:3306/mydb", "username", "password")
.locations("classpath:db/migration")
.load();
// 마이그레이션 실행하기
flyway.migrate();
// 애플리케이션 실행
// ...
}
}
위의 예시에서는 dataSource
메서드를 사용하여 데이터베이스 연결 정보를 설정하고, locations
메서드로 마이그레이션 파일이 위치한 경로를 지정합니다.
마지막으로 migrate
메서드를 호출하여 Flyway가 데이터베이스 마이그레이션을 실행합니다.
4. 애플리케이션 실행 및 데이터베이스 마이그레이션 확인하기
Flyway를 구성하고 애플리케이션을 실행하면 Flyway가 migration
디렉토리에 있는 마이그레이션 파일을 찾아 실행합니다. 이 때, Flyway는 데이터베이스에 마이그레이션 이력을 저장하여 중복 실행되지 않도록 합니다.
Flyway는 애플리케이션 실행 시 자동으로 마이그레이션을 수행하므로, 애플리케이션을 실행할 때마다 Flyway가 마이그레이션을 실행할 필요가 있으면 자동으로 실행됩니다.
참고 자료
- Flyway 공식 문서: https://flywaydb.org/
- Flyway GitHub 저장소: https://github.com/flyway/flyway