Prologue
-
이 글을 시작하기에 앞서
해당 글에서 사용하는 SQL Option을 모르겠다면
Spring Boot SQL Option 알아보기 글을 참고하자.
SQL Option : show_sql
- Docs에서 show_sql은 다음과 같이 정의되어 있다.
hibernate.show_sql (e.g. true or false (default value))
Write all SQL statements to the console.
This is an alternative to setting the log category org.hibernate.SQL to debug.
ex)
logging:
level:
org.hibernate.SQL: debug
-
즉 Spring Boot 설정 파일인 application.properties에
spring.jpa.properties.hibernate.show_sql = true 로 설정한다는 것은
logging.level.org.hibernate.SQL = debug 와 같다.
vs hibernate.SQL
-
여기서 차이점이 있다면
spring.jpa.properties.hibernate.show_sql은 System.Out에 Log가 출력된다.
반면 logging.level.org.hibernate.SQL = debug는 logger에 Log를 출력한다.
그러므로 logging.level.org.hibernate.SQL를 사용하는 게 좋다.
Example
- 출력되는 결과를 보면 다름을 확인할 수 있다.
application.yml
spring:
jpa:
properties:
hibernate:
show_sql: true # to System Out
format_sql: true
logging:
level:
org.hibernate.SQL: debug # to logger
logging.level.org.hibernate.SQL
2020-11-08 10:25:23.714 DEBUG 94983 --- [nio-8080-exec-1] org.hibernate.SQL:
select
testentity0_.id as id1_8_0_
from
test_entity testentity0_
where
testentity0_.id=?
2020-11-08 10:25:23.717 DEBUG 94983 --- [nio-8080-exec-1] org.hibernate.SQL:
insert
into
test_entity
(id)
values
(?)
spring.jpa.properties.hibernate.show_sql
Hibernate:
select
testentity0_.id as id1_8_0_
from
test_entity testentity0_
where
testentity0_.id=?
Hibernate:
insert
into
test_entity
(id)
values
(?)
Summary
-
결론적으로
spring.jpa.properties.hibernate.show_sql 사용은 지양하고
logging.level.org.hibernate.SQL = debug 사용을 지향해야 한다.