Home > Spring > πŸƒ[Spring] spring.jpa.properties.hibernate.format_sqlμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?

πŸƒ[Spring] spring.jpa.properties.hibernate.format_sqlμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?
Spring Framework

πŸƒ[Spring] spring.jpa.properties.hibernate.format_sqlμ΄λž€ λ¬΄μ—‡μΌκΉŒμš”?

  • spring.jpa.properties.hibernate.format_sql은 Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ Hibernateκ°€ μƒμ„±ν•˜λŠ” SQL(Structured Query Language) 쿼리λ₯Ό 읽기 μ‰½κ²Œ ν¬λ§·ν•˜λŠ” μ„€μ •μž…λ‹ˆλ‹€.
  • 이 섀정을 ν™œμ„±ν™”ν•˜λ©΄ Hibernateκ°€ λ°μ΄ν„°λ² μ΄μŠ€μ— μ‹€ν–‰ν•˜λŠ” SQL(Structured Query Language) 쿼리가 포맷된 ν˜•μ‹μœΌλ‘œ 좜λ ₯되며, 이λ₯Ό 톡해 κ°œλ°œμžλŠ” 쿼리의 ꡬ쑰λ₯Ό 더 μ‰½κ²Œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

1️⃣ μ—­ν• .

  • SQL(Structured Query Language) 쿼리 ν¬λ§·νŒ…
    • 기본적으둜 Hibernateκ°€ 좜λ ₯ν•˜λŠ” SQL(Structured Query Language) μΏΌλ¦¬λŠ” λͺ¨λ‘ ν•œ μ€„λ‘œ 좜λ ₯되기 λ•Œλ¬Έμ— λ³΅μž‘ν•œ 쿼리λ₯Ό 읽기가 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
      • spring.jpa.properties.hibernate.format_sql을 true둜 μ„€μ •ν•˜λ©΄ SQL(Structured Query Language) 쿼리λ₯Ό 보기 μ’‹κ²Œ λ“€μ—¬μ“°κΈ°κ°€ 된 ν˜•νƒœλ‘œ 좜λ ₯ν•΄μ€λ‹ˆλ‹€.
  • 디버깅 및 μ΅œμ ν™”
    • SQL(Structured Query Language) 쿼리가 가독성이 μ’‹μ•„μ§€λ©΄, κ°œλ°œμžλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— μ–΄λ–€ 쿼리λ₯Ό μ‹€ν–‰ν•˜λŠ”μ§€ μ‰½κ²Œ νŒŒμ•…ν•  수 있으며, 쿼리λ₯Ό λ””λ²„κΉ…ν•˜κ±°λ‚˜ μ„±λŠ₯을 μ΅œμ ν™”ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

2️⃣ μ„€μ • 방법.

  • Spring Bootμ—μ„œλŠ” application.properties λ˜λŠ” application.yml νŒŒμΌμ—μ„œ 이 속성을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘‰ application.properties νŒŒμΌμ—μ„œ μ„€μ •.

spring.jpa.properties.hibernate.format_sql=true

πŸ‘‰ application,yml νŒŒμΌμ—μ„œ μ„€μ •.

spring:
  jpa:
    properties:
      hibernate:
        format_sql: true

3️⃣ λ™μž‘ μ˜ˆμ‹œ.

  • spring.jpa.properties.hibernate,format_sql=true둜 μ„€μ •ν•œ ν›„, λ³΅μž‘ν•œ SQL 쿼리λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ½˜μ†”μ— 좜λ ₯λ˜λŠ” SQL이 μžλ™μœΌλ‘œ λ“€μ—¬μ“°κΈ°κ°€ 적용된 μƒνƒœλ‘œ 좜λ ₯λ©λ‹ˆλ‹€.

πŸ‘‰ μ„€μ • μ „(ν¬λ§·νŒ…λ˜μ§€ μ•Šμ€ SQL)

select user0_.id as id1_0_, user0_.email as email2_0_, user0_.name as name3_0_ from user user0_

πŸ‘‰ μ„€μ • ν›„(ν¬λ§·νŒ…λœ SQL)

select
    user0_.id as id1_0_, 
    user0_.email as email2_0_, 
    user0_.name as name3_0_ 
from
    user user0_
  • μ΄λ ‡κ²Œ ν¬λ§·νŒ…λœ SQL은 가독성이 λ†’μ•„μ Έ, λ³΅μž‘ν•œ SQL 쿼리도 μ‰½κ²Œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

4️⃣ κ΄€λ ¨ μ„€μ •.

  • spring.jpa.show-sql
    • 이 섀정은 Hibernateκ°€ μ‹€ν–‰ν•˜λŠ” SQL 쿼리λ₯Ό μ½˜μ†”μ— 좜λ ₯ν•˜λ„λ‘ ν™œμ„±ν™”ν•©λ‹ˆλ‹€.
      • show-sql=true둜 μ„€μ •ν•˜λ©΄ SQL 쿼리λ₯Ό μ½˜μ†”μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
        spring.jpa.show-sql=true
        
  • spring.jpa.properties.hibernate.use_sql_comments
    • 이 섀정은 쿼리 λ‘œκ·Έμ— SQL 주석을 μΆ”κ°€ν•˜μ—¬, 쿼리가 μ‹€ν–‰λœ μœ„μΉ˜λ‚˜ λͺ©μ μ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
      spring.jpa.properties.hibernate.use_sql_comments=true
      

5️⃣ μš”μ•½.

  • spring.jpa.properties.hibernate.format_sql은 Hibernateκ°€ 좜λ ₯ν•˜λŠ” SQL 쿼리λ₯Ό 읽기 μ‰½κ²Œ ν¬λ§·νŒ…ν•˜λŠ” μ„€μ •μž…λ‹ˆλ‹€.
  • 이 섀정을 true둜 ν™œμ„±ν™”ν•˜λ©΄ SQL 쿼리의 가독성이 ν–₯μƒλ˜λ©°, κ°œλ°œμžλŠ” 디버깅과 쿼리 μ΅œμ ν™” μž‘μ—…μ„ 더 μ‰½κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.