[Spring Boot] 데이터베이스 초기 세팅

Junseo Kim·2020년 2월 26일
3

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

application.properties에서 spring.jpa.hibernate.ddl-auto= 의 속성 값을 update, create-drop, create 3개 중에 하나로 설정하면 자동으로 스키마가 생성된다.

update는 기존 데이터를 유지해 줄 수 있지만, create와 create-drop은 기존 데이터가 지워진다.

그리고 위에서 설정해준 옵션을 사용할지 말지를 정해주는 spring.jpa.generate-ddl=true도 설정해준다.

이렇게 두 가지 설정을 해주면, @Entity 정보를 바탕으로 매핑이되는 스키마를 자동 생성해준다.

이전에 사용했던 Account 엔티티(참고: https://velog.io/@max9106/Spring-Boot-spring-data-JPA)를 그대로 사용하고 애플리케이션을 재실행 하면, Account 스키마가 생겼음을 볼 수 있다.

위의 설정은 개발시 하는 것이다. 실제 애플리케이션 운영시에는 spring.jpa.hibernate.ddl-auto=validate
spring.jpa.generate-ddl=false 로 해준다.

validate는 현재 Entity 매핑이 relation DB에 매핑 할 수 있는 상황인지를 검증하는 것이다.

validate일 때, entity에 어트리뷰트를 추가해주면 애플리케이션 실행시 에러가 난다. 매핑을 할 수 없기 때문이다.

update인 경우 추가된 어트리뷰트를 스키마에 반영해주지만, 기존 어트리뷰트의 이름을 바꿔주면 스키마에서 그 부분의 변경사항을 반영해주지는 못한다.

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

resources 밑에 schema.sql을 만들어 쿼리문을 적어주면 된다. 그럼 실행할 때 마다, 해당 쿼리문이 실행된다.

마찬가지 방법으로 data.sql을 만들어 초기 데이터를 스키마에 넣어줄 수도 있다.

실행 순서는 schema.sql -> data.sql 이다.

tip

보통 개발 때는 jpa를 사용하여, update 방식으로 쓰다가, 배포 할 때 쯤, test 파일로 깔끔한 스키마를 얻어서, schema.sql에 쿼리문을 넣어서 사용한다. 이 때는 validate 방식을 사용한다고한다.

0개의 댓글