Study/spring

[Java] Spring Boot 3 JPA 쿼리 파라미터 바인딩 로그 설정

 

Spring Boot에서 JPA 쿼리 로그를 설정하는 방법과 로그에 ?로 표시되는 바인딩 파라미터 값을 표시하는 방법에 대해 설명드리겠습니다.

 

쿼리 관련 로그 설정

JPA 쿼리를 로그에 표시하도록 설정하는 방법은 여러가지가 있습니다.

# application.properties
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comment=true
spring.jpa.properties.hibernate.highlight_sql=true

logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.orm.jdbc.bind=TRACE

# application.yml
spring:
  jpa:
    show-sql: true
    properties.hibernate:
      format_sql: true
      show_sql: true
      use_sql_comment: true
      hightlight_sql:true
logging:
  level.org.hibernate:
    SQL: DEBUG
    orm.jdbc.bind: TRACE

 

비슷한게 많아보이는데, 각 설정에 대해 설명드리겠습니다.

 

spring.jpa.show-sql=true

해당 설정만 사용하면 다음과 같이 로그가 표시됩니다.

spring.jpa.show-sql=true 설정 시 쿼리 표시
spring.jpa.show-sql=true 설정 시 쿼리 표시

spring.jpa.properties.hibernate.show_sql=true와 같은 역할을 하기 때문에 두 설정 중 하나만 사용하면 됩니다.

 

 

 

 

spring.jpa.properties.hibernate.format_sql=true

이 옵션은 spring.jpa.show-sql=true 설정이나 spring.jpa.properties.hibernate.show_sql=true 옵션과 함께 사용해야합니다.

format_sql 설정 시 쿼리 표시
format_sql 설정 시 쿼리 표시

 

spring.jpa.properties.hibernate.use_sql_comment=true

이 옵션은 쿼리에 추가적인 주석을 표시할지 설정하는 옵션입니다.

 

spring.jpa.properties.hibernate.highlight_sql=true

highlight_sql 설정 시 쿼리 표시
highlight_sql 설정 시 쿼리 표시

쿼리에 색깔로 하이라이트 효과를 줄지 설정하는 옵션입니다.

 

파라미터 바인딩 값 로그 표시 방법

SQL 관련 로그 설정만 하면 쿼리에 바인딩되는 값이 전부 ?로 나와서 어떤 값이 들어가는지 확인할 수 없습니다.

?로 된 값을 표시하는 방법에 대해 설명드리겠습니다.

logging.level.org.hibernate.orm.jdbc.bind=TRACE

logging.level.org.hibernate.SQL=debug 설정과 함께 사용하면 쿼리도 같이 확인할 수 있습니다.

파라미터 바인딩 설정 시 바인딩된 파라미터 표시 로그
파라미터 바인딩 설정 시 바인딩된 파라미터 표시 로그

 

참고로 logging.level.org.hibernate.type=TRACE나 logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 설정은 스프링 부트 3버전에서는 적용되지 않는 것 같습니다.