컬쥐네 다락방

Flyway를 이용한 DB 초기화 본문

웹 개발/Java,Spring

Flyway를 이용한 DB 초기화

코딩하는 갱얼쥐 2021. 8. 7. 14:12

요즘 기업들을 과제를 하면서 하나 둘 배우는게 정말 많은데 바쁘다는 핑계로 정리해두는 일을 미루고있다 . 

반성하며 간단히라도 적어놓고 나중에 다시 찾아보는 일이 없도록 해보자 ! 

 

Spring을 이용하면 Spring JPA의 spring.jpa.generate.ddl 이나 Hibernate의 hbm2ddl.auto 등의 기능을 사용할 때가 많다. 프로그램을 구동할 때 @Entity 라는 어노테이션을 찾아서 자동으로 테이블을 생성하고 맵핑을 해준다. 

 

이런 기능을 사용하면 간단하게 DB 관리를 할 수 있어서 편한다는 장점이 있지만, 테이블 스키마가 변경되거나, 필수로 초기에 들어가야하는 데이터들이 수정되었을 때 히스토리 관리가 잘 되지 않는다는 단점이 있다. 

 

Flyway는 이런 히스토리 관리쪽에서 장점이 있다 ! 

 

Flyway를 사용하기 위해서는 Gradle 기준으로 

 

1. plugins에 flyway를 넣어주기. 

2. dependencies와 별도로 flyway 설정을 넣어주기

로컬 환경에서 테스트를 진행했다 ! 

3. 위에서 설정한 위치에 파일을 만들어주기

 보통은 resources 폴더에 db/migration 속에 만드는 것이 정석! 

여기서 파일명에는 V + 버전 + __ + 설명. sql  같은 규칙이 있다. 이후 새로운 버전의 파일을 하나씩 만들어가면서 변경 사항을 적용해가며 버전을 올려간다!  V1, V2 혹은 V1.0, V1.1 같이.

 

이렇게 동작하게 되면 자동으로 SCHEMA_VERSION 이라는 테이블이 생기게되는데 그곳에 인덱스, 버전명, 설명, SQL or JDBC 타입, 스트립트 이름, 실행 주최자, 시간, 성공 여부 등이 기록되면서 히스토리를 쉽게 찾아볼 수 있게 된다. 

 

SQL 파일은 SQL 문법을 사용해서 적어주면 된다. 

 

 

 

'웹 개발 > Java,Spring' 카테고리의 다른 글

AngularJS commit conventions - 커밋 메시지  (0) 2021.11.25
getById()와 findById()의 차이점  (0) 2021.09.03
JWT와 OAuth 차이점  (2) 2021.07.05
RESTful API 란?  (0) 2021.06.29
Spring MVC 란?  (0) 2021.06.14
Comments