설정 없이 테스트시 스키마를 생성하지만, 어플리케이션 실행시에는 테이블을 생성하지 않는다.
spring.jpa.hibernate.ddl.auto
- create : 구동시 삭제후 새로 생성
- create-drop : 구동시 생성, 종료시 삭제
- update : 기존 스키마에서 추가 부분만 생성
- validate : 엔티티 맵핑이 현재 릴레이션에 맵핑 가능한지 검증만 한다. ( 변경 x )
spring.jpa.generate.ddl
- 기본 값은 false (validate 시, 즉 운영시 사용함이 바람직)
- true 설정해야 자동으로 스키마를 만든다.
두 속성은 같이 설정되어야 동작한다.
spring.jpa.show-sql
- 기본 값 false
- 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 |