본문 바로가기
DB&JPA

[JPA] JPA 쿼리 로그 및 파라미터 바인딩 확인하기 (SpringBoot3 버전)

by 덩라 2023. 7. 8.

JPA 를 공부하면, 아래와 같은 설정을 많이 보게됩니다. 

아래 설정은 JPA 에서 실행하는 쿼리를 IDE console 창에 출력해서 쿼리를 확인하기 위해 사용합니다.

# application.yml
spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
        use_sql_comments: true
        
logging:
  level:
    org.hibernate.type: trace

위 처럼 application.yml(혹은 application.properties) 를 적용하면, 아래처럼 JPA 에서 발생하는 쿼리와 파라미터를 볼 수 있습니다.

그런데.... 당연히 이렇게 알고... 새로운 프로젝트에 동일하게 세팅했음에도.... 파라미터 바인딩 로그가 찍히지 않는 것이었습니다...

 

분명 insert 쿼리가 나갔고, ? 로 파라미터 바인딩도 표시되는데 앞선 설정대로 적용하면 로그가 찍히지 않는 것이었습니다.

오타인가?? yml 파일인데 들여쓰기를 잘못했나??(yml파일은 들여쓰기가 매우매우매우 중요합니다!!) 등등 많은 삽질 끝에...

어떤 엄청나신 분의 블로그를 보고 원인을 알아버렸습니다.

 

출처 : https://sundries-in-myidea.tistory.com/151#google_vignette

 

Spring boot 3.0.0 SQL Basic Binder 로깅 안되는 문제 해결기

스프링부트에서 SQL문을 로깅하자 JPA에서 sql문 로깅하기 위해서는 application.yml에서 로깅레벨이나 옵션 사용해서 문제해결을 한다. spring: jpa: properties: hibernate: format_sql: true use_sql_comments: true logging

sundries-in-myidea.tistory.com

 

위 블로그 필자분께서 말씀하신 원인은... JPA의 구현체인 hibernate 가 SpringBoot3 버전에 맞게 버전을 올리면서 로깅 체제를 변경했다는 것입니다...! (위 포스팅 너무 잘 써주셔서 전 숟가락만 얹겠습니다...)

 

그래서 결론적으로 아래처럼 설정을 변경해주었습니다.

# application.yml
spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
        use_sql_comments: true
        
logging:
  level:
    org.hibernate.orm.jdbc.bind: trace # 이 부분이 변경되었습니다! ㅠ

 

그랬더니 아래처럼 딱!! 파라미터가 잘 출력되는 것을 확인할 수 있었습니다.

 

댓글