Spring Boot | 데이터베이스 접근 | Flyway으로 마이그레이션
Flyway으로 마이그레이션
코드 작성
build.gradle
dependencies {
compile 'org.springframework.boot:spring-boot-starter-data-jpa'
compile 'org.hsqldb:hsqldb'
+ compile 'org.flywaydb:flyway-core'
}
application.properties
spring.jpa.hibernate.ddl-auto=none
src/main/resources/db/migration/V1create_database.sql
CREATE TABLE HOGE (
ID INTEGER NOT NULL IDENTITY,
VALUE VARCHAR(256)
);
INSERT INTO HOGE (VALUE) VALUES ('HOGE');
INSERT INTO HOGE (VALUE) VALUES ('FUGA');
INSERT INTO HOGE (VALUE) VALUES ('PIYO');
Main.java
package sample.springboot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import sample.springboot.jpa.HogeRepository;
@SpringBootApplication
public class Main {
public static void main(String[] args) throws Exception {
try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
Main m = ctx.getBean(Main.class);
m.method();
}
}
@Autowired
private HogeRepository repository;
public void method() {
this.repository.findAll().forEach(System.out::println);
}
}
실행 결과
Hoge [id=0, value=HOGE]
Hoge [id=1, value=FUGA]
Hoge [id=2, value=PIYO]
- Flyway을 의존관계에 추가하면 서버 시작시에 마이그레이션을 실행하게 된다.
- JPA를 사용하는 경우에는 JPA가 DB를 자동 생성하지 않도록하지 않으면 안되기 때문에,
spring.jpa.hibernate.ddl-auto=none
을 지정한다.
최종 수정 : 2017-12-17