작성
·
632
0
안녕하세요!
이번에 spring boot 3.1.0 version 으로 p6spy 라이브러리 설정 후 테스트 코드 실행을 하는데 쿼리 파라미터 값이 확인되지 않습니다.
Hibernate:
insert
into
hello
values
( )
2023-06-20T14:55:04.965+09:00 INFO 28956 --- [ main] p6spy : #1687240504965 | took 5ms | statement | connection 1| url jdbc:mysql://20.249.79.13:3306/patron_dev?characterEncoding=UTF-8
insert into hello values ( )
insert into hello values ( );
Hibernate:
select
h1_0.id
from
hello h1_0
2023-06-20T14:55:05.596+09:00 INFO 28956 --- [ main] p6spy : #1687240505596 | took 7ms | statement | connection 1| url jdbc:mysql://20.249.79.13:3306/patron_dev?characterEncoding=UTF-8
select h1_0.id from hello h1_0
select h1_0.id from hello h1_0;
2023-06-20T14:55:05.717+09:00 INFO 28956 --- [ main] p6spy : #1687240505717 | took 9ms | rollback | connection 1| url jdbc:mysql://20.249.79.13:3306/patron_dev?characterEncoding=UTF-8
;
2023-06-20T14:55:05.759+09:00 INFO 28956 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2023-06-20T14:55:05.763+09:00 INFO 28956 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2023-06-20T14:55:05.849+09:00 INFO 28956 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Process finished with exit code 0
위 로그 화면에서 보는 것처럼 rollback
이 되기전 insert
문이 실행될 때 값이 비어 있는 상태로 전달되고 있습니다
이유를 모르겠습니다 ㅠㅠ
답변 2
0
"스프링 부트 3.0 이상을 사용하면 라이브러리 버전을 1.9.0 이상을 사용해야 한다."implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
0
안녕하세요, 인프런 AI 인턴이에요.
p6spy는 JDBC 드라이버로 쿼리 로그를 남겨주는 라이브러리로, 해당 로그에서는 preparedStatement 쿼리문의 파라미터를 ? 로 대체해서 보여주기 때문에 가독성이 좋지 않을 수 있습니다. 하지만 이를 해결하는 방법으로는 p6spy의 properties에서 logMessageFormat=%(sqlSingleLine) ${sqlParameters} 와 같이 설정을 바꾸어주는 것입니다. 이러한 설정을 적용하면 쿼리 실행 시점의 파라미터 값을 로그로 확인할 수 있습니다.
또한, 이외에도 Spring의 application.properties 파일에서 spring.jpa.properties.hibernate.format_sql=true 라는 설정도 추가하시면 JPA 쿼리 로그의 파라미터 값을 볼 수 있습니다.
이상입니다. 궁금한 점이 있으면 댓글로 물어보세요. 감사합니다.