본문 바로가기

CS 잡지식

하이버네이트, 쿼리 파라미터 보는 법!!

insert문을 실행한 SQL문을 보여 주고 있다. 

그러나, VALUES(?,?)에서 [?]에 어떠한 값들이 DB에 전달이 되었는 지 알고 싶다. 

그럴 때, 여러 가지 방법이 있지만 가장 좋은 방법은 p6spy 외부 라이브러리를 이요하는 것이다. 

(다만, Spring Boot의 버전에 따라 p6spy 라이브러리를 적용하는 방법이 다르니 주의!!)

 

여기서는 스프링 부트 3.x.x 버전을 기준으로 설명을 하겠다. 

p6spy-spring-boot-starter 라이브러리는 현재 스프링 부트 3.0을 정상 지원하지 않는다.

(스프링 부트 2.x.x 에서는 위 라이브러리를 gradle에 implentation해주기만 하면 됐다)

스프링 부트 3.0에서 사용하려면 다음과 같은 추가 설정이 필요하다.

1. org.springframework.boot.autoconfigure.AutoConfiguration.imports 파일 추가

src/resources/META-INF/spring/ 디렉터리를 만들고 다음 이름의 파일을 생성

-> org.springframework.boot.autoconfigure.AutoConfiguration.imports

위 파일에 아래 내용을 복붙!

com.github.gavlyukovskiy.boot.jdbc.decorator.DataSourceDecoratorAutoConfiguration

(폴더명: src/resources/META-INF/spring

파일명: org.springframework.boot.autoconfigure.AutoConfiguration.imports )

2. spy.properties 파일 [추가]

src/resources/[spy.properties]

-> [spy.properties] 파일에 아래 내용 복붙!

appender=com.p6spy.engine.spy.appender.Slf4JLogger

 

3. gradle에서 아래를 추가

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

 

-> 그러나 이 방법은 성능 테스트를 해서, 성능을 많이 깍아 먹는지 아닌지를 확인해야 한다. 

공부를 할 때야 SQL문이 더 잘 보이는 게 좋지만, p6spy는 아무래도 많은 SQL 관련 정보를 뿌리므로 성능을 깍아 먹을 수

가 있다.

고로, 개발을 할 때에는 사용해도 좋지만, 배포/서비스 운영 시에는 꼭 성능 테스트를 통해 성능에 영향을 주는지 확인을 하

고 사용을 해야 한다.