SpringBoot

JPA 사용시 데이터베이스 스키마 초기화 및 데이터 사용 방법

Jungsoomin :) 2020. 11. 8. 01:22

설정 없이 테스트시 스키마를 생성하지만, 어플리케이션 실행시에는 테이블을 생성하지 않는다.

 

spring.jpa.hibernate.ddl.auto

  1. create : 구동시 삭제후 새로 생성
  2. create-drop : 구동시 생성, 종료시 삭제
  3. update : 기존 스키마에서 추가 부분만 생성
  4. validate : 엔티티 맵핑이 현재 릴레이션에 맵핑 가능한지 검증만 한다. ( 변경 x )

spring.jpa.generate.ddl

  1. 기본 값은 false (validate 시, 즉 운영시 사용함이 바람직)
  2. true 설정해야 자동으로 스키마를 만든다.

두 속성은 같이 설정되어야 동작한다.

 


spring.jpa.show-sql

  1. 기본 값 false
  2. true 설정시 로그가 띄워진다.

application.properties

#DataBase PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost/postgres
#driver-class-name 을 사용하지 않은 이유는 스프링부트에서 url을 보고 값을 추측하여 설정하기 때문이다.
spring.datasource.username=postgres
spring.datasource.password=...
spring.jpa.open-in-view=true

#데이터 베이스 초기화

# 자동 스키마 생성
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.generate-ddl=false

#로그
spring.jpa.show-sql=true

테스트시에도 application.properties 가 적용되므로 영향을 받게 된다. 

해결방법 : 하이버네이트 생성 문을 가져온 스크립트 파일을 사용해야한다.

 

chema.sql 파일에 생성문 추가

classpath:chema.sql

drop table if exists account CASCADE
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))

'SpringBoot' 카테고리의 다른 글

MongoDB  (0) 2020.11.08
데이터베이스마이그레이션  (0) 2020.11.08
JPA 사용  (0) 2020.11.08
Spring Data JPA 개요  (0) 2020.11.08
MySQL,PostgreSQL  (0) 2020.11.07