본문 바로가기
Dev/Spring Boot

[스프링 부트 개념과 활용] 스프링 데이터 8부

by dev_jsk 2020. 8. 27.
728x90
반응형

Database Migration

Database 스키마 버전관리 기능

 

Flyway 연동하기

1. 의존성 추가

// pom.xml

<!-- Flyway -->
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

2. Database 실행

Docker를 이용해 PostgreSQL을 실행한다.

 

3. application.properties 설정

// application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/springboot
spring.datasource.name=jinseo
spring.datasource.password=pass

spring.jpa.hibernate.ddl-auto=validate // DB Table 과 Entity 일치하는지 검증만
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true

4. SQL 파일 생성

/resources/db/migration/{vendor} 에 스키마, 데이터 관련 SQL 파일 생성

// V1__init.sql

drop table if exists account;
drop sequence if exists hibernate_sequence;
create sequence hibernate_sequence start with 1 increment by 1;
create table account (id bigint not null, password varchar(255), username varchar(255), primary key (id));

Appliation 실행 시 Flyway에 의해 V1__init.sql이 실행된다.

해당 SQL이 실행된 후 spring.jpa.hibernate.ddl-auto=validate 설정에 의해 DB TableEntity가 일치하는지 검증 수행

 

* SQL 파일 생성 시 주의 사항

  • 형식 : V숫자__이름.sql
  • 앞에 V는 꼭 대문자로 작성
  • 숫자는 순차적으로 작성 (타임스탬프 권장)
  • 숫자와 이름 사이에 언더바 2개
  • 이름은 가능한 서술적으로 작성
  • 변경사항은 새로운 SQL 파일을 만들어서 작성

5. Account 객체 내 active 추가

// Account.java

@Entity
public class Account {
    
    @Id @GeneratedValue // 자동으로 생성되는 값
    private Long id;
    private String username;
    private String password;
    private boolean active;	// 새로 추가
    
    getter/setter
    equals()
    hashCode()
}

스키마 변경을 위한 V2__add_active.sql 을 추가

// V2__init.sql

alter table account add column active boolean;

Application 실행하면 스키마 변경사항이 반영된 것을 확인할 수 있다.

728x90
반응형

댓글