본문 바로가기

Spring Boot

SQL parameter 값 확인하기

JPA를 통해서 DB로 SQL을 전송하면 console에 parameter값이 ?로 찍히는 것을 볼 수 있다.
이 ?로 찍히는 parameter 값을 확인하는 2가지 방법을 알아보자!


application.yml 설정

#생략
logging.level:
	org.hibernate.type: trace

위와 같이 logging.level.org.hibernate.typetrace로 설정해주면
parameter가 console창에 찍히는 것을 볼 수 있다.

console창

Hibernate: 
    insert 
    into
        member
        (username, id) 
    values
        (?, ?)
2022-01-20 08:49:13.310 TRACE 40114 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [VARCHAR] - [memberA]
2022-01-20 08:49:13.311 TRACE 40114 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [2] as [BIGINT] - [1]

이 방법은 2번째 방법에 비해 간단하지만, log를 보기 불편하다는 단점이 있다.


p6spy lib 사용하기

이 lib를 사용하면 조금 더 보기 좋게 console에 SQL parameter가 찍힌다.
나는 gradle을 사용하였고, p6spy를 사용하려면 다음 코드를
build.gradledependencies 안에 추가해준다.

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

 

console창

2022-01-20 08:57:16.193  INFO 40293 --- [           main] p6spy                                    : #1642636636193 | took 1ms | statement | connection 3| url jdbc:h2:tcp://localhost/~/Desktop/private/h2/datajpa
insert into member (username, id) values (?, ?)
insert into member (username, id) values ('memberA', 1);
2022-01-20 08:57:16.207  INFO 40293 --- [           main] p6spy                                    : #1642636636207 | took 2ms | commit | connection 3| url jdbc:h2:tcp://localhost/~/Desktop/private/h2/datajpa

;

application.yml을 통해 설정할 때보다 log 보기가 더 수월하다.
대신 약간의 성능을 더 사용하게 되니, 테스트 서버에서만 사용하는 것을 권장한다.
하지만 이게 성능을 크게 먹는 것이 아니니 괜찮다고 판단되면 그냥 운영서버에도 넣어버려도 된다.