똑같은 삽질은 2번 하지 말자
Spring Boot 개념다지기 No.17(데이터베이스 초기화,Migrations) 본문
데이터베이스 초기화
테스트를 할때 @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 같은것도 가능하고 다양한기능들이 있다.)
의존성 추가
- org.flywaydb:flyway-core
마이그레이션 디렉토리
- db/migration 또는 db/migration/{vendor}
- spring.flyway.locations로 변경 가능
마이그레이션 파일 이름
- V숫자__이름.sql
- V는 꼭 대문자로.
- 숫자는 순차적으로 (타임스탬프 권장)
- 숫자와 이름 사이에 언더바 두 개.
- 이름은 가능한 서술적으로.
다음은 NoSql 인데 음.. MongoDB만 일단 한번 봐볼까 생각중이다.
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot 개념다지기 No.19(RestClient) (0) | 2020.05.06 |
---|---|
Spring Boot 개념다지기 No.18(Starter-Security) (0) | 2020.05.05 |
Spring Boot 개념다지기 No.16(Spring Data JPA) (0) | 2020.05.04 |
Spring Boot 개념다지기 No.15 (Spring Data) (0) | 2020.05.03 |
Spring Boot 개념다지기 No.14 (CORS) (0) | 2020.05.03 |
Comments