사소한 Tip과 개념들

spring.jpa.hibernate.ddl-auto 설정

숲별 2022. 11. 3. 06:35
728x90

 

 

  • none: 아무것도 실행하지 않는다 (대부분의 DB에서 기본값이다)
  • create-drop: SessionFactory가 시작될 때 drop및 생성을 실행하고, SessionFactory가 종료될 때 drop을 실행한다 (in-memory DB의 경우 기본값이다)
  • create: SessionFactory가 시작될 때 데이터베이스 drop을 실행하고 생성된 DDL을 실행한다
  • update: 변경된 스키마를 적용한다
                 (SessionFactory 연결된 DB와 비교하여 추가된 항목은 추가 만약 같은 변수명이면 오류발생)
  • validate: 변경된 스키마가 있다면 변경점을 출력하고 애플리케이션을 종료한다
                   (SessionFactory 시작시 객체구성과 스키마가 다르다면 예외 발생)

 

오류가 발생해도 서버 시작하기

Spring JDBC initializer 동작시 fail-fast이므로, 스크립트에서 문제가 발생하면 어플리케이션 동작이 실패한다.

spring.datasource.continue-on-error 설정값(기본값: false)을 true로 변경하여 종료되지 않게 할 수 있다.

 

출처 : https://pravusid.kr/java/2018/10/10/spring-database-initialization.html

 

Spring에서 JPA / Hibernate 초기화 전략 · ID PRAVUS

Spring-data-JPA와 DBMS를 연결해서 사용할 때 간편히 개발환경의 변경사항을 적용하여 테스트 할 수 있다. 특히 테스트를 위한 in-memory Database인 H2 Database를 염두에 둔 DB 초기화 전략에서 신경쓸 점을

pravusid.kr

 

 

 

주의할 점

  • 운영 장비에서는 절대 crate, create-drop, update 사용하면 안된다.
  • 개발 초기 단계는 create 또는 update
  • 테스트 서버는 update 또는 validate
  • 스테이징과 운영 서버는 validate 또는 none

하지만 로컬 환경을 제외한 나머지 서버에서는 최대한 직접 쿼리를 날려서 적용하는 것이 가장 좋다.

 

출처 : https://smpark1020.tistory.com/140

 

ddl-auto 옵션 관련 주의할 점!!!!!!!!!

얼마전에 개발바닥 호돌맨님의 재난급 서버 장애내고 개발자 인생 끝날뻔 한 썰을 보게 되었다. 나처럼 JPA를 많이 안써본 사람들이 보면 아주 도움될 영상이다🤣🤣 결론은 spring.jpa.hibernate.ddl-a

smpark1020.tistory.com

 

'사소한 Tip과 개념들' 카테고리의 다른 글

toString() vs String.valueOf()  (0) 2022.11.13
.config 파일이란  (0) 2022.11.03
CI/CD와 툴  (0) 2022.11.02
스레드 기초 유도원님 강의, 책 추천목록  (0) 2022.11.01
chmod 리눅스 명령어  (0) 2022.11.01