혼자 공부중
JPA 쓰면 답답한 점 : org.hibernate.type :trace로 해결
onnnzeoz
2024. 6. 7. 22:50
JPA를 쓰면
SQL 나가는거랑 데이터베이스 커넥션 가져오는 것들 어느 타이밍에 가져오는건지 잘 모르겠음
파라미터를 로그에 찍어줄 때도 ?로 찍어줌
insert into
member
(id, username)
values
(default, ?)
이것을 극복하기 위해 -> 쿼리 파라미터 로그로 남기는 라이브러리
org.hibernate.type :trace
logging:
level:
org.hibernate.SQL: debug #sql문을 logger로 보는거
org.hibernate.type : trace
하고나면
이렇게
저 끝에 파라미터로 뭘 줬는지 나타냄
insert
into
member
(id, username)
values
(default, ?)
2024-06-07 22:20:52.714 TRACE 19560 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [memberA]
좀 더 자세하게 보고싶다면 외부 라이브러리 사용
com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6
build.gradle에 추가해주기
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
설정에 넣어주고 나면 이렇게 로그에 값이 더 실제 데이터처럼 찍힘
2024-06-07 22:48:54.655 INFO 22108 --- [ main] p6spy : #1717768134655 | took 8ms | statement | connection 3| url jdbc:h2:tcp://localhost/~/jpashop
insert into member (id, username) values (default, ?)
insert into member (id, username) values (default, 'memberA');