[서버][스프링] spring.jpa.hibernate.ddl-auto 프로퍼티
spring.jpa.hibernate.ddl-auto 프로퍼티는 hibernate.hbm2ddl.auto라는 속성으로 결국 hibernate에 전달 될 값을 지정하는 방법입니다. create, create-drop, validate 및 update 값은 기본적으로 스키마 도구 관리가 시작시 데이터베이스 스키마를 조작하는 방법에 영향을 줍니다.
h2와 같은 내장 DB를 쓰는지 외부 DB를 쓰는지에 따라 기본 값은 달라집니다. 내장 DB를 쓰면 기본 값은 create-drop이며, 외부 DB를 쓰는 경우 기본 값은 none입니다.
h2를 쓰는 경우 spring.jpa.hibernate.ddl-auto를 none으로 설정하면 부팅시 schema.sql(DDL)이 사용되지 않으며 @Entity 어노테이션으로도 테이블이 생성되지 않습니다.
h2에서 @Entity로부터 table 생성을 끄고 schemal.sql로만 DDL을 하려면
spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=embedded
를 추가하고 HikariCP를 제외시키면 됩니다.
제외 안시키면 cyclic이 발생하네요.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</exclusion>
</exclusions>
</dependency>
Connection Pool은 아래처럼 프로퍼티로 명시할 수도 있습니다.
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
대신 dependency 추가가 필요합니다.
참고
www.baeldung.com/spring-boot-data-sql-and-schema-sql
stackoverflow.com/questions/49438517/why-spring-boot-2-0-application-does-not-run-schema-sql
docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
github.com/spring-cloud/spring-cloud-security/issues/143
댓글 영역