똑같은 삽질은 2번 하지 말자

Spring Boot 개념다지기 No.17(데이터베이스 초기화,Migrations) 본문

Spring/Spring Boot

Spring Boot 개념다지기 No.17(데이터베이스 초기화,Migrations)

곽빵 2020. 5. 4. 16:05

데이터베이스 초기화

테스트를 할때 @SpringBootTest 를 이용하면 test용의 properties가 없으면

전 범위 스코프에서 다 따오기 때문에 더 느릴수 있다는거 인지하자.

(DataJpaTest는 슬라이스 테스트로써 Embedded DB만 설정해주면 빠르게 동작)

 

JPA를 사용한 데이터베이스 초기화

  • spring.jpa.hibernate.ddl-auto
  • spring.jpa.generate-dll=true로 설정 해줘야 동작함.

SQL 스크립트를 사용한 데이터베이스 초기화

  • schema.sql 또는 schema-${platform}.sql
  • data.sql 또는 data-${platform}.sql
  • ${platform} 값은 spring.datasource.platform 으로 설정 가능.

resources 폴더 밑에 schema.sql

이러면 프로젝트 시작시 초기화

update속성은 되도록 쓰지말자 추가된 스키마만 업데이트하는거라서 위험

 

데이터베이스 마이그레이션

데이터베이스의 깃같은 툴로써 시시각각 변하는 스키마의 관리를 위한 툴로 

Flyway와 Liquibase가 대표적이다.(이전으로 Rollback 같은것도 가능하고 다양한기능들이 있다.)

https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#howto-execute-flyway-database-migrations-on-startup

 

Spring Boot Reference Guide

This section dives into the details of Spring Boot. Here you can learn about the key features that you may want to use and customize. If you have not already done so, you might want to read the "Part II, “Getting Started”" and "Part III, “Using Spr

docs.spring.io

의존성 추가

  • org.flywaydb:flyway-core

마이그레이션 디렉토리

  • db/migration 또는 db/migration/{vendor}
  • spring.flyway.locations로 변경 가능

마이그레이션 파일 이름

  • V숫자__이름.sql
  • V는 꼭 대문자로.
  • 숫자는 순차적으로 (타임스탬프 권장)
  • 숫자와 이름 사이에 언더바 두 개.
  • 이름은 가능한 서술적으로.

다음은 NoSql 인데 음.. MongoDB만 일단 한번 봐볼까 생각중이다.

Comments