기본적으로 JPA에서 쿼리를 화면에 출력할 때, 쿼리 파라미터가 '?'로 찍힌다.
insert
into
member
(username, id)
values
(?, ?)
파라미터 값을 로그로 남기는 법을 알아보자.
1. 설정 정보
간단한 방법으로 application.yml 파일에 다음 값을 추가하면 된다.
logging.level:
org.hibernate.SQL: debug
org.hibernate.type: trace
org.hibernate.SQL 옵션은 로거를 통해 하이버네이트 실행 SQL을 남긴다.
중요한 것은 org.hibernate.type 옵션 이다. 이 옵션을 통해 SQL 실행 파라미터 로그를 남길 수가 있다.
<쿼리 예시>
insert
into
member
(username, id)
values
(?, ?)
... binding parameter [1] as [VARCHAR] - [memberA]
... binding parameter [2] as [BIGINT] - [1]
이와 같이 각 파라미터에 어떤 값이 들어가는지 확인할 수 있다.
2. 외부 라이브러리 - p6spy
https://github.com/gavlyukovskiy/spring-boot-data-source-decorator
스프링 부트를 사용하면 이 라이브러리만 추가하면 된다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7'
<쿼리 예시>
insert
into
member
(username, id)
values
(?, ?)
insert into member (username, id) values (?, ?)
insert into member (username, id) values ('memberA', 1);
이렇게 보다 깔끔하게 파라미터 값을 볼 수 있다.
+) 참고 : 쿼리 파라미터를 로그로 남기는 외부 라이브러리는 시스템 자원을 사용하므로, 개발 단계에서는 편하게 사용해도 된다. 하지만 운영시스템에 적용하려면 꼭 성능테스트를 하고 사용하는 것이 좋다.
'java > jpa' 카테고리의 다른 글
[Spring Data JPA] 예제 도메인 모델 (0) | 2021.05.23 |
---|---|
[Spring Data JPA] 프로젝트 환경설정 (0) | 2021.05.23 |
[JPA] API 개발 고급 - 실무 필수 최적화 (1) | 2021.05.21 |
[JPA] API 개발 고급 - 컬렉션 조회 최적화 (0) | 2021.05.19 |
[JPA] API 개발 고급 - 지연 로딩과 조회 성능 최적화 (0) | 2021.05.18 |