스프링 부트 개념과 활용
4. 스프링 부트 활용
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/springboot-concept-uses/tree/chap04-10-07-data-jpa_reset
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
10. 스프링 데이터 7부: 데이터베이스 초기화
JPA를 사용한 데이터베이스 초기화
spring.jpa.hibernate.ddl-auto
옵션
작성해둔 Entity 정보를 바탕으로 스키마를 생성
데이터가 유지되므로 주로 spring.jpa.hibernate.ddl-auto=update
로 개발시에는 개발을 함
update 단점은 컬럼이 변경되어도 그 컬럼은 남겨두고 새로변경된 컬럼만 추가하므로 운영시에 지저분해짐
update
: 기존의 스키마는 놔두고 추가된 사항만 변경함create-drop
: 처음에 스키마를 만들고 Application 종료시 스키마 dropcreate
: 처음에 지우고 스키마를 새로 만듬validate
: 현재 Entity 맵핑이 릴레이션 DB에 맵핑할 수 있는 상황인지 맵핑이 되는지를 검증
spring.jpa.generate-ddl
DDL에 변경을 허용하기 위한 프로퍼티
기본적으로 false로 되어있어 true로 설정 해줘야 동작함
spring.jpa.show-sql
기본적으로 false로 되어있어 true로 설정 해주면 console에 hibernate 로그를 보여줌
운영용 설정
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.generate-ddl=false
Test에서는 아래의 두 옵션을 주석처리
#spring.jpa.hibernate.ddl-auto=validate
#spring.jpa.generate-ddl=false
SQL 스크립트를 사용한 데이터베이스 초기화
테스트할때마다 Application이 구동될 때 마다 스크립트를 통해 데이터베이스를 초기화함
스크립트를 만든상태에서는 ddl-auto
, generate-ddl
옵션을 줘도 스크립트로 먼저 스키마 초기화를 하므로 에러가 발생하지 않음
스크립트 실행 순서는 schema.sql
-> data.sql
순서이므로 초기데이터를 스크립트로 넣을 수 있음
schema.sql
또는schema-${platform}.sql
data.sql
또는data-${platform}.sql
${platform}
값은spring.datasource.platform
으로 설정 가능
아래외 같이 옵션을주고
postgresql-schema.sql
로 주면 platform별로 스크립트를 작성할 수 있음
spring.datasource.platform=postgresql
테스트 코드
1. 테스트에서 데이터베이스 초기화 SQL을 만든다
drop table account if exists
drop sequence if exists hibernate_sequence
create sequence hibernate_sequence start with 1 increment by 1
create table account (id bigint not null, email varchar(255), password varchar(255), username varchar(255), primary key (id))
2. src/resources 경로에 schema.sql 파일을 생성하고 SQL을 붙여넣는다
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 데이터 JPA] 2-1. 관계형 데이터베이스와 자바 (0) | 2019.11.22 |
---|---|
[스프링 데이터 JPA] 1-1. 소개 (0) | 2019.11.22 |
[스프링 부트 개념과 활용] 4-10. 스프링 데이터 6부: Spring-Data-JPA 연동 (0) | 2019.11.21 |
[스프링 부트 개념과 활용] 4-10. 스프링 데이터 5부: 스프링 데이터 JPA 소개 (0) | 2019.11.20 |
[스프링 부트 개념과 활용] 4-10. 스프링 데이터 4부: PostgreSQL 설정하기 (0) | 2019.11.19 |
댓글