Miracle Morning, LHWN

14-3. Flyway 사용해보기 - Java-based Mirgrations 본문

IT 기술/[JAVA] Spring Boot

14-3. Flyway 사용해보기 - Java-based Mirgrations

Lee Hye Won 2021. 5. 26. 07:39

# 파일명을 정의할 때 역시 Flyway 가 인식할 수 있도록 명명규칙을 따라주어야 하며, 여기선 'V3__bulk_update_books.java' 로 지정하였다. 이때 경로는 src/java 하위에 바로 db/migration 경로를 생성해주었고 그 안에 java 파일을 위치한다.

 

BaseJavaMigration 을 상속받아 migrate 함수를 Override 하여 사용해주면 된다.

 

createStatement 를 통해 쿼리를 생성할 수 있는 객체를 만들고, SELECT 를 통해 가져온 rows 를 하나하나 while 문으로 돌려가며

UPDATE 쿼리를 날려주었다. 

package db.migration;

import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;

import java.sql.ResultSet;
import java.sql.Statement;

public class V3__bulk_update_books extends BaseJavaMigration {
    @Override
    public void migrate(Context context) throws Exception {
        try (Statement select = context.getConnection().createStatement()) {
            try (ResultSet rows = select.executeQuery("SELECT id FROM books ORDER BY id")) {
                while (rows.next()) {
                    int id = rows.getInt(1);
                    String nameToChange = "LHWN2";
                    try (Statement update = context.getConnection().createStatement()) {
                        update.execute("UPDATE books SET name='" + nameToChange + "'WHERE id=" + id);
                    }
                }
            }
        }
    }
}

1. 테이블을 생성한 상태
2. bootRun 을 통해 데이터를 주입한 상태
3. 이후 Update 쿼리를 실행함으로써 Version 3 까지 Success 되어 반영된 상태
4. 내가 작성한 Update 쿼리의 내용대로 데이터베이스 내용이 변경되었음


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

 

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

 

fastcampus.co.kr

 

Comments