JPA를 통해서 DB로 SQL을 전송하면 console에 parameter값이 ?로 찍히는 것을 볼 수 있다.
이 ?로 찍히는 parameter 값을 확인하는 2가지 방법을 알아보자!
application.yml 설정
#생략
logging.level:
org.hibernate.type: trace
위와 같이 logging.level.org.hibernate.type을 trace로 설정해주면
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.gradle의 dependencies 안에 추가해준다.
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 보기가 더 수월하다.
대신 약간의 성능을 더 사용하게 되니, 테스트 서버에서만 사용하는 것을 권장한다.
하지만 이게 성능을 크게 먹는 것이 아니니 괜찮다고 판단되면 그냥 운영서버에도 넣어버려도 된다.
'Spring Boot' 카테고리의 다른 글
API 예외처리 공통화 1 (0) | 2022.04.03 |
---|---|
Slack에서 error log 알림받기(console 변동 X) (0) | 2022.03.11 |
Checked Exception에서 Transaction rollback시키기 (0) | 2022.01.19 |
운영 yaml과 개발 yaml을 구분하기 (0) | 2021.11.17 |
Spring Boot Project 생성 (0) | 2021.10.22 |