[Spring] hibernate 설정 정보

이병수·2024년 1월 23일
0

스프링 정리

목록 보기
10/24
post-custom-banner

Spring Boot SQL 설정

hibernate 설정


hibernate.show_sql

spring.jpa.properties.hibernate.show_sql=true
  • Hibernate가 DB에 수행하는 모든 쿼리문을 콘솔에 출력

  • 디폴트 값은 false임


hibernate.format_sql

spring.jpa.properties.hibernate.format_sql=true
  • 로그, 콘솔의 SQL을 이쁘게 출력

  • 디폴트 값은 false임

  • false라면 출력되는 쿼리문이 없음


hibernate.highlight_sql

spring.jpa.properties.hibernate.highlight_sql=true
  • SQL 출력을 ANSI escape codes 를 사용하여 색을 부여

hibernate.use_sql_comments

spring.jpa.properties.hibernate.use_sql_comments=true
  • 보다 쉬운 디버깅을 위해 SQL 내부에 /* */ 주석을 추가

등등.. 더 많은 것들이 있음


hibernate.hbm2ddl.auto

JPA 구현체 중 하나인 하이버네이트는 엔티티만 등록해두면 DDL을 자동으로 작성하여 테이블을 생성하거나 수정해주는 ddl-auto 설정이 있다.

ddl-auto 종류

  1. create

  2. create-drop

  3. update

  4. validate

  5. none(default)


spring.jpa.hibernate.ddl-auto=create
  • 엔티티로 등록된 클래스와 매핑되는 테이블을 자동으로 생성

  • 기존에 해당 클래스와 매핑되는 테이블이 존재한다면 기존 테이블을 삭제하고 생성한다.


spring.jpa.hibernate.ddl-auto=create-drop
  • create와 비슷하게 엔티티로 등록된 클래스와 매핑되는 테이블이 존재한다면 기존 테이블을 삭제하고 생성한다.

  • 하지만, 애플리케이션이 종료될 때 테이블을 삭제하는 차이점이 있다.,


spring.jpa.hibernate.ddl-auto=update
  • 엔티티로 등록된 클래스와 매핑되는 테이블이 없으면 새로 생성하며, 기존의 테이블이 존재하면 테이블의 컬럼을 변경한다.

  • 하지만 모든 변경사항을 반영하는 것이 아닌, 기존에 존재하는 컬럼의 속성은 건드리지 않고 새로운 컬럼이 추가되는 변경사항만 반영한다.


spring.jpa.hibernate.ddl-auto=validate
  • DDL을 작성하여 테이블을 생성하거나 수정하지 않고, 엔티티 클래스와 테이블이 정상적으로 매핑되는지만 검사한다.

spring.jpa.hibernate.ddl-auto=none
  • 위의 4가지 경우를 제외만 모든 경우에 속한다.

ddl-auto 속성 주의사항

validate, none을 제외한 속성은 운영 DB에 절때 사용하면 안된다!

  • 운영 DB의 테이블이 몽땅 삭제되는 대 참사가 일어나거나, 변경사항이 반영되지 않은 버전을 배포하였을 때, 테이블에 데이터가 INSERT되지 않을 수 있다.

따라서 이 속성을 주의해야한다!!

개발 초기 단계 또는 로컬에서 테스트할 경우

  • create 또는 update

테스트 서버일 경우

  • update 또는 validate

스테이징 및 운영 서버일 경우

  • validate 또는 none
profile
백엔드 개발자가 되고 싶어요
post-custom-banner

0개의 댓글