Miracle Morning, LHWN

14-1. Flyway 사용해보기 - Gradle Usage 본문

IT 기술/[JAVA] Spring Boot

14-1. Flyway 사용해보기 - Gradle Usage

Lee Hye Won 2021. 5. 25. 08:29

# gradle Project 를 생성해서 Flyway 를 사용해본다.

 

# 우선 프로젝트에 SQL 주소, user 정보 등을 설정하고 ddl-auto 가 어떤 방식으로 반영될지를 설정해준다.

 

// /main/resources/application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=sa
spring.datasource.password=password

spring.jpa.hibernate.ddl-auto=none

 

# 그리고 flyway 가 데이터베이스에 접근할 때 사용하는 정보를 명시해주어야 하는데

여기에서는 REAL 환경과 TEST 환경을 분리하여 작성했다. (REAL 환경은 src/main/java, TEST 환경은 src/test/java)

 

하지만 여기서 주의해야할 점은 flyway 를 두 번 명시해주었기 때문에 실상 마지막에 작성한 속성만 적용된다는 점이다..

(실무에서는 절대 이러한 형태로 작성하면 안된다.)

// /build.gradle

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
//	runtimeOnly 'com.h2database:h2'
	runtimeOnly 'mysql:mysql-connector-java'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
	useJUnitPlatform()
}

//REAL
flyway {
	url='jdbc:mysql://localhost:3306/db_example'
	user='sa'
	password='password'
	locations=['classpath:db/migration']
}

//TEST
flyway {
	url='jdbc:mysql://localhost:3306/db_example_test'
	user='sa'
	password='password'
	locations=['filesystem:src/test/resources/db/migration']
}

이렇게 하고 터미널에서 ./gradlew 명령을 통해 flywayValidate 해주면 아직 Migrate 가 발생하지 않았다는 내용이 나온다.

이때 위에 설정한 내용처럼 flyway 가 자동으로 locations 경로를 탐색해서 Schema 를 찾는다. Schema 정의 내용은 아래와 같다.

 

// /src/main/resources/db/migration/V1__create_books.sql

CREATE TABLE books (
    id BIGINT NOT NULL,
    name VARCHAR(64),
    author VARCHAR(64)
);

 

이후, SQL 쪽에도 접속해서 생성된 database, table 등을 확인해보면 아래와 같다.


출처 : https://fastcampus.co.kr/courses/204729/clips/

 

패스트캠퍼스 온라인 강의 - 스프링 아카데미아 15개 영상강의 코스(5월)

 

fastcampus.co.kr

 

'IT 기술 > [JAVA] Spring Boot' 카테고리의 다른 글

15. Spring REST Docs  (0) 2021.05.26
14-2. Flyway 사용해보기 - Flyway API (Java)  (0) 2021.05.25
13. DDL-AUTO 와 Flyway  (0) 2021.05.22
12. JPQL, Criteria, Query DSL  (0) 2021.05.17
11. JPA (Java Persistence API)  (0) 2021.05.17
Comments