Gidhub BE Developer

Spring Boot SQL Option : 'show_sql' Option Deep 하게 알아보기

2020-11-09
goodGid

Prologue


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 사용을 지향해야 한다.


Reference


Index