반응형
1. Flyway란?
Flyway는 데이터베이스의 버전 관리 및 마이그레이션을 간편하게 도와주는 오픈 소스 라이브러리입니다. 데이터베이스 스키마와 데이터의 변경 이력을 코드로 관리할 수 있으며, 변경 사항을 쉽게 추적하고 반영할 수 있게 합니다.
2. Flyway의 주요 기능
- 버전 관리: 데이터베이스 변경 이력을 버전별로 관리할 수 있습니다.
- 자동 마이그레이션: 애플리케이션 시작 시 자동으로 데이터베이스 변경 사항을 적용할 수 있습니다.
- 다양한 데이터베이스 지원: MySQL, PostgreSQL, Oracle 등 다양한 데이터베이스를 지원합니다.
- Rollback 기능: 잘못된 마이그레이션을 쉽게 되돌릴 수 있습니다.
3. Flyway 설정 및 사용 방법
3.1. Flyway 의존성 추가
먼저 프로젝트에 Flyway 의존성을 추가해야 합니다. Maven이나 Gradle을 사용하여 Flyway를 프로젝트에 추가할 수 있습니다.
Gradle
dependencies {
implementation 'org.flywaydb:flyway-core:9.22.0'
}
Maven
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>9.22.0</version>
</dependency>
3.2. Flyway 설정 파일 작성
Flyway의 설정 파일은 src/main/resources/application.yml 또는 application.properties에 작성합니다.
application.yml 예시
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root
flyway:
enabled: true
locations: classpath:db/migration
baseline-on-migrate: true
3.3. 마이그레이션 파일 작성
Flyway는 resources/db/migration 디렉토리 아래에 SQL 파일을 두고 관리합니다. 파일명은 V{버전번호}__{설명}.sql 형식을 따릅니다.
예시: 테이블 생성
V1__create_user_table.sql
CREATE TABLE IF NOT EXISTS users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
예시: 컬럼 추가
V2__add_age_column_to_user_table.sql
ALTER TABLE users ADD COLUMN age INT;
3.4. 애플리케이션 실행
애플리케이션을 실행하면 Flyway가 자동으로 db/migration 디렉토리 아래의 마이그레이션 파일들을 실행하여 데이터베이스 스키마를 변경합니다.
4. Flyway의 장점
- 자동화: 애플리케이션 시작 시 자동으로 데이터베이스 변경 사항을 적용합니다.
- 일관성: 모든 데이터베이스 변경 이력이 코드로 관리되기 때문에 일관성을 유지할 수 있습니다.
- 유지보수 용이: 변경 이력을 추적할 수 있어 유지보수가 용이합니다.
[Reference]]
반응형
'Spring > Spring Boot' 카테고리의 다른 글
[Spring Boot] JPA @MapsId를 이용한 FK를 PK로 사용하기 (0) | 2024.07.23 |
---|---|
[Spring Boot] @NoargsConstructor(AccessLevel.PROTECTED), @Builder (1) | 2024.07.23 |
[Spring Boot]스프링 부트에서 ddl-auto 사용 방법 (0) | 2024.06.03 |
[Spring Boot] Lombok 어노테이션 정리 (0) | 2024.05.23 |
[Spring] Path Variable vs Query Parameter (0) | 2024.03.29 |