flyway로 DB 관리하기(with spring boot & gradle)
2024. 8. 16. 16:12ㆍSpring
반응형
이 글에서는 flyway를 어떻게 spring boot에 적용하는지에 대해 작성하겠습니다.
Flyway는 DB 버전 관리 툴로, 다양한 DB를 지원하고 마이그레이션을 지원합니다.
의존성 추가 및 기본 설정
plugins {
...
id("org.flywaydb.flyway") version "9.0.0"
}
dependencies {
implementation("org.flywaydb:flyway-core")
}
build.gradle에 이렇게 두 개의 문장을 추가해 의존성을 추가해줍니다.
flyway {
url = db_url
user = db_user
password = db_password
locations = arrayOf(db_migration_file_loc) # 기본 위치는 filesystem:src/main/resources/db/migration
cleanDisabled = false # clean 가능하게 할지 여부
}
그리고 flyway설정을 추가해줍니다.
추가 후 gradle sync를 실행해주면,
flyway 관련 명령어가 생성된 것을 확인할 수 있습니다.
파일 위치 및 작성법
기본 위치는 /src/main/resources/db/migration입니다.
해당 위치에 실행하고자 하는 sql파일을 만들면 됩니다.
이떄 규칙이 있는데,
마이그레이션의 경우
V1__Create_Account.sql 과 같은 형식으로,
undo의 경우
U2__Undoe_account.sql과 같은 형식으로,
repeatable migration의 경우
R1__Repeat.sql과 같은 형식으로 됩니다.
* repeatable migration은 매번 실행될 때마다 동일한 이름으로 재실행 가능한 마이그레이션 스크립트를 의미합니다.
일반적인 마이그레이션과 달리, Repeatable Migration은 고유한 버전 번호가 없으며, 스크립트 내용이 변경될 때마다 다시 실행됩니다.
저는 db/migration위치에 V1__Create_account.sql을 만들었고,
CREATE TABLE accounts
(
id BIGSERIAL PRIMARY KEY,
email CHARACTER VARYING NOT NULL,
encoded_password CHARACTER VARYING NOT NULL,
default_username CHARACTER VARYING NOT NULL
);
flyway-migrate를 실행하면
이렇게 정상적으로 실행됩니다.
반응형
'Spring' 카테고리의 다른 글
(Spring) JpaRepository는 인터페이스인데 어떻게 동작할까? (0) | 2023.08.31 |
---|---|
(Spring) JPA exists를 최적화하는 여러가지 방법들 (0) | 2022.11.05 |
(Spring) DI/의존 객체 주입 패턴 + Lombok (0) | 2022.09.20 |
(Spring) Transactional 사용법 (0) | 2022.08.10 |
(Spring) Why Maven? Why Gradle? (0) | 2022.08.07 |