🌱 Spring/JPA

[JPA] JPA 설정 총 정리 : ddl-auto 옵션, 실행 쿼리 보기(SpringBoot 3.x 버전 변경 추가)

an2z 2023. 4. 19. 11:02

데이터베이스 연동

📁 application.yml

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/test
    username: sa
    password:
    driver-class-name: org.h2.Driver
  • spring.datasource : DB 연결정보

 

JPA ddl-auto 옵션

📁 application.yml

spring:
  jpa:
    open-in-view: false
    hibernate:
      ddl-auto: create
  • open-in-view : osiv 웹 요청이 완료될 때까지 영속성을 가지는 옵션 (켜두면 성능상 안 좋기 때문에 false 사용) 
  • hibernate.ddl-auto : 
    • create : 기존 테이블 삭제 후 다시 테이블 생성 (DROP + CREATE)
    • create-drop : 테이블 생성 후 종료시점에 테이블 삭제 (CREATE + DROP)
    • update : 변경만 반영
    • validate : 엔티티와 테이블이 정상 매핑되는지만 확인
    • none : 사용하지 않음(실제로는 없는 값이지만 관례상 표시)

 

실행 쿼리 출력

콘솔에 직접 출력하는 방식

📁 application.yml

spring:
  jpa:
    properties:
      hibernate:
        show_sql: true

로그로 출력하는 방식

📁 application.yml

logging.level:
    org.hibernate:
    	SQL: debug

다양한 출력 형태 옵션

📁 application.yml

spring:
  jpa:
    properties:
      hibernate:
        format_sql: true
        highlight_sql: true
        		
logging.level:
  org.hibernate:
    type.descriptor.sql: trace
    //type.descriptor.sql.BaiscBinder: trace
  • format_sql : 실행 쿼리를 한줄이 아니라 가독성있게 포맷팅하여 출력
  • highlight_sql : SQL문을 하이라이팅
  • type.descriptor.sql : 실행 쿼리에 바인딩되는 파라미터를 출력

 

스프링 부트 3.x 버전부터 변경사항

스프링 부트 2.x 버전에서는 잘 출력되는데 스프링 부트 3.x 버전에서는 바인딩 파라미터가 출력되지 않아 찾아보니 옵션이 조금 달라졌다고 한다. 현재 3.x 이상 버전을 사용한다면 해당 옵션을 사용해주도록 하자.

 

📁 application.yml

logging.level:
    org.hibernate:
    	orm.jdbc.bind: trace

 

 

외부 라이브러리 사용

 

GitHub - gavlyukovskiy/spring-boot-data-source-decorator: Spring Boot integration with p6spy, datasource-proxy, flexy-pool and s

Spring Boot integration with p6spy, datasource-proxy, flexy-pool and spring-cloud-sleuth - GitHub - gavlyukovskiy/spring-boot-data-source-decorator: Spring Boot integration with p6spy, datasource-p...

github.com

📂 build.gradle

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

🖥 실행 예시

 


Reference

Spring Boot SQL 보기 옵션 총 정리

JPA 설정 샘플 (application.yml)

JPA 데이터베이스 설정