모든 로그 출력은 가급적 로거를 통해 남겨야 합니다.
spring.jpa.properties.hibernate.show_sql: true
=> 쿼리를 System.out으로 출력한다. (권장되지 않음)logging.level.org.hibernate.SQL: debug
spring.jpa.properties.hibernate.format_sql: true
=> 이 2개를 사용하면 쿼리를 로거를 통해 보기 좋게 출력한다.logging.level.org.hibernate.type: trace
=> 이것을 사용하면 쿼리 파라미터의 값까지 확인할 수 있다.
application.yml 코드
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create # 로컬에서만 사용하기
properties:
hibernate:
# show_sql: true
format_sql: true
logging:
level:
org.hibernate.SQL: debug
org.hibernate.type: trace
로그 확인
2021-04-28 16:50:37.388 DEBUG 26752 --- [ main] org.hibernate.SQL :
insert
into
member
(username, id)
values
(?, ?)
2021-04-28 16:50:37.393 TRACE 26752 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [memberA]
2021-04-28 16:50:37.394 TRACE 26752 --- [ main] o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [BIGINT] - [1]
추가 기능
스프링 부트에서 외부 라이브러리인 p6spy를 사용하면 쿼리 파라미터가 포함된 쿼리를 확인할 수 있습니다.
개발 단계에서는 편하게 사용해도 되지만 운영 환경에서는 성능 저하의 원인이 될 수 도 있으니 성능 테스트를 하고 사용하는 것이 좋습니다.
pom.xml
<dependency>
<groupId>com.github.gavlyukovskiy</groupId>
<artifactId>p6spy-spring-boot-starter</artifactId>
<version>1.7.1</version>
</dependency>
로그 확인
2021-04-28 16:53:49.331 INFO 14576 --- [ main] p6spy : #1619596429331 | took 0ms | statement | connection 3| url jdbc:h2:tcp://localhost/~/jpashop
insert into member (username, id) values (?, ?)
insert into member (username, id) values ('memberA', 1);
2021-04-28 16:53:49.331 INFO 14576 --- [ main] p6spy : #1619596429331 | took 0ms | commit | connection 3| url jdbc:h2:tcp://localhost/~/jpashop
'JPA' 카테고리의 다른 글
양방향 관계 맵핑 (0) | 2021.05.20 |
---|---|
Id 필드에 @GeneratedValue(strategy = GenerationType (0) | 2021.05.12 |
JPA Auditing으로 생성시간, 수정시간 자동화하기 (0) | 2021.05.12 |
H2 쿼리 문법을 MySQL 쿼리 문법으로 변경하여 로그 출력하기 (0) | 2021.05.12 |
ddl-auto 옵션 관련 주의할 점!!!!!!!!! (5) | 2021.04.28 |
댓글