JPA를 사용하다 보면 실제로 실행된 SQL과 바인딩된 파라미터 값을 확인해야 할 때가 많습니다.
하지만 기본 설정만으로는 ? 만 출력되어, 실제 값은 확인하기 어렵습니다.

이번 글에서는 쿼리 파라미터를 로그로 남기는 두 가지 방법을 알아보겠습니다.
1️⃣ Hibernate 로그 레벨 설정으로 파라미터 확인
application.yml 설정
Spring Boot 버전에 따라 아래와 같이 로그 옵션을 추가합니다.
logging.level:
org.hibernate.SQL: debug
# org.hibernate.type: trace #스프링 부트 2.x, hibernate5
org.hibernate.orm.jdbc.bind: trace #스프링 부트 3.x, hibernate6적용 결과
다음과 같이 쿼리의 특정 파라미터 위치에 어떤 값이 바인딩되었는지 확인할 수 있습니다.

단점
SQL 로그와 파라미터 로그가 분리되어 출력되어 한눈에 파악하기에는 가독성이 떨어집니다.
2️⃣ 외부 라이브러리 사용 (p6spy)
SQL과 파라미터를 한 줄로 완성된 형태로 보고 싶다면,
외부 라이브러리를 사용하는 방법이 있습니다.
대표적으로 p6spy가 많이 사용됩니다.
build.gradle
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.10.0'적용 결과
SQL과 파라미터가 완성된 형태로 출력되는 것을 확인할 수 있습니다.

참고 자료
아래 깃허브에서 다양한 옵션으로 로그 포맷을 커스터마이징할 수 있습니다.
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 - gavlyukovskiy/spring-boot-data-source-decorator
github.com
⚠️ 운영 환경 적용 시 주의사항
쿼리 파라미터 로그를 남기는 외부 라이브러리는
시스템 자원을 사용하므로, 성능에 영향을 줄 수 있습니다.
따라서 개발 단계에서는 자유롭게 사용해도 되지만
운영시스템에 적용하려면 꼭 성능테스트를 하고 사용해야합니다.
'Back end > Spring Project' 카테고리의 다른 글
| [Spring] JPA - 프록시(Proxy) (0) | 2025.08.29 |
|---|---|
| [Spring] JPA - @MappedSuperclass (0) | 2025.08.27 |
| [Spring] JPA 양방향 연관관계와 연관관계의 주인 (0) | 2025.08.20 |
| [Spring] JPA 준영속 상태(Detached) (0) | 2025.08.15 |
| [Spring] JPA flush (0) | 2025.08.14 |