[Spring] μ‹ κ·œ ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•΄ μ‚¬μš© ν•΄λ΄„μ§ν•œ Hibernate Logging μ˜΅μ…˜ 정리

2024. 4. 12. 18:51ㆍBackend/Spring

ν˜„μž¬ 지인 3λΆ„κ³Ό ν•¨κ»˜ μ§„ν–‰ν•˜κ³  μžˆλŠ” μŠ€ν”„λ§ ν”„λ‘œμ νŠΈκ°€ μžˆλ‹€. 

 

GitHub - Tiketeer/Tiketeer-BE

Contribute to Tiketeer/Tiketeer-BE development by creating an account on GitHub.

github.com

ν”„λ‘œμ νŠΈ 초창기 μ„ΈνŒ… μ‹œ ν•˜μ΄λ²„λ„€μ΄νŠΈ 둜그 μ˜΅μ…˜μ„ μ•„λž˜μ²˜λŸΌ κ°„λ‹¨ν•˜κ²Œλ§Œ μ€¬μ—ˆλŠ”λ°, ν”„λ‘œμ νŠΈλ₯Ό 진행 함에 μžˆμ–΄ 디버깅 λͺ©μ μœΌλ‘œ DB μΈ‘ 둜그λ₯Ό κΉŒλ’€μ§‘μ„ λ•Œ λ‚˜λ‚˜ νŒ€μ›λ“€μ˜ 둜그 정보에 λŒ€ν•œ λ§Œμ‘±λ„κ°€ 그리 높지 μ•Šμ•˜λ‹€. (μ •μž‘ ν•„μš”ν•œ λ‘œκ·Έκ°€ μ—†λ‹€, λ‘œκ·Έλ“€μ΄ λˆˆμ— μ•ˆλ“€μ–΄μ˜¨λ‹€, λ‘œκ·Έλ“€μ΄ λ„ˆλ¬΄ 많이 μ°νžŒλ‹€... λ“±)

# κΈ°μ‘΄ application.yml

spring.jpa.show-sql: true

spring.jpa.properties.hibernate.format_sql: true

logging.level.org.hibernate: debug
logging.level.org.hibernate.type.descriptor.sql.BasicBinder: trace

κ·Έλž˜μ„œ 이λ₯Ό ν•΄μ†Œν•˜κΈ° μœ„ν•΄ λ‘œκΉ… μ˜΅μ…˜λ“€μ„ μ’€ 정리해야겠닀고 μƒκ°ν–ˆκ³ , 이λ₯Ό μœ„ν•΄ ν•˜μ΄λ²„λ„€μ΄νŠΈ λ‘œκΉ… μ˜΅μ…˜μ„ λ¦¬μ„œμΉ˜ν•œ λΆ€λΆ„λ“€κ³Ό μ΅œμ’…μ μœΌλ‘œ μ μš©ν•œ μ˜΅μ…˜λ“€μ„ 기둝, κ³΅μœ ν•˜κΈ° μœ„ν•΄ 이 글을 μž‘μ„±ν•˜μ˜€λ‹€.

(μ μš©ν•œ λ‘œκΉ… μ˜΅μ…˜λ§Œ ν™•μΈν•˜κ³  싢은 경우, κΈ€μ˜ μ΅œν•˜λ‹¨μœΌλ‘œ κ±΄λ„ˆ λ›Έ 것)

λ‘œκΉ… μ˜΅μ…˜

1. show-sql: true

기쑴에 μ‚¬μš©ν•˜λ˜ μ˜΅μ…˜μ΄λ‹€. 

이 μ˜΅μ…˜μ„ μ΄μš©ν•˜λ©΄ μŠ€ν”„λ§ ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ Jpaλ₯Ό 톡해 DB둜 싀행될 쿼리듀을 μ•„λž˜μ²˜λŸΌ 둜그둜 확인할 수 μžˆλ‹€.

spring.jpa.show-sql: true 의 결과

개발, ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ μ‚¬μš©ν•΄λ΄„μ§ν•œ μ˜΅μ…˜μœΌλ‘œ JPAκ°€ μΆ”μƒν™”ν•˜λŠ” DB μΈ‘ 쿼리λ₯Ό μ§μ ‘μ μœΌλ‘œ 확인할 수 μžˆμ–΄ 디버깅 μ‹œ μœ μš©ν•˜λ‹€.

ν•˜μ§€λ§Œ μ‹€μ œλ‘œ 이λ₯Ό μ‚¬μš©ν•˜λŠ” 것은 ꢌμž₯λ˜μ§€ μ•ŠλŠ”λ°, κ·Έ μ΄μœ λŠ” ν•΄λ‹Ή μ˜΅μ…˜μ΄ ν”„λ‘œμ νŠΈμ˜ λ‘œκΉ… μ˜΅μ…˜μ„ λ¬΄μ‹œν•œ 채 κ³§λ°”λ‘œ ν‘œμ€€ 좜λ ₯(Standard Output)을 톡해 둜그λ₯Ό 좜λ ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

λ‘œκ·Έκ°€ κ³§λ°”λ‘œ ν‘œμ€€ 좜λ ₯을 톡해 좜λ ₯될 경우 λ°œμƒν•  수 μžˆλŠ” λ¬Έμ œλŠ” μ•„λž˜μ™€ κ°™λ‹€.

  • 좜λ ₯ν•  둜그λ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— 따라 λ™μ μœΌλ‘œ μ„ νƒν•˜λŠ” 것이 νž˜λ“€λ‹€. (둜그 레벨)
  • λ‘œκΉ…μ΄λΌλŠ” νš‘λ‹¨ κ΄€μ‹¬μ‚¬μ—μ„œ λ°œμƒν•˜λŠ” λ‹€μ–‘ν•œ μš”κ΅¬μ‚¬ν•­λ“€(ex. 파일 μ“°κΈ° μ •μ±…)을 ν•˜λ‚˜μ˜ κ΅¬ν˜„μ²΄(ν”„λ ˆμž„μ›Œν¬)λ₯Ό 톡해 μ œμ–΄ν•  수 μ—†λ‹€.

λ”°λΌμ„œ ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것보닀 μ•„λž˜ μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯λœλ‹€.

logging.level.org.hibernate.SQL: {log_level}

곡식 λ¬Έμ„œμ— λ”°λ₯΄λ©΄ μ΄λ“€μ˜ λ™μž‘ 방식은 λ™μΌν•˜λ‹€κ³  λ‚˜μ™€μžˆλ‹€. λ‹€λ₯Έ 점은, μœ„ μ˜΅μ…˜μ„ μ‚¬μš©ν•  경우 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ„€μ •ν•œ 둜거λ₯Ό μ΄μš©ν•˜μ—¬ 둜그λ₯Ό 좜λ ₯ν•˜κ²Œ λœλ‹€.
λ‹¨μˆœ 쿼리만 좜λ ₯됐던 것과 달리, κΈ°λ³Έ 둜거의 μ»¨ν…μŠ€νŠΈλ₯Ό 톡해 좜λ ₯λ˜λŠ” λͺ¨μŠ΅

 

2. properties.hibernate.format_sql: true

기쑴에 μ‚¬μš©ν•˜λ˜ μ˜΅μ…˜μ΄λ‹€.

ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν•  경우, show-sqlλ₯Ό(ν˜Ήμ€ 이λ₯Ό λŒ€μ²΄ν•˜λŠ” org.hibernate.SQL μ˜΅μ…˜) 톡해 좜λ ₯λ˜λŠ” 쿼리듀이 보기 μ’‹κ²Œ μ€„λ°”κΏˆ λ˜μ–΄ 좜λ ₯λœλ‹€.

μœ„μ—μ„œ 보여쀀 μŠ€ν¬λ¦°μƒ·λ“€μ€ 사싀 이미 이 μ˜΅μ…˜μ΄ 적용된 μƒνƒœμ΄λ‹€. (μ μš©ν•˜μ§€ μ•Šμ„ 경우 쿼리듀이 ν•œμ€„λ‘œ 좜λ ₯λœλ‹€.)

 

3. properties.hibernate.highlight_sql: true

μƒˆλ‘­κ²Œ μ•Œκ²Œ 된 μ˜΅μ…˜μ΄λ‹€.

이λ₯Ό μ‚¬μš©ν•  경우, 좜λ ₯λ˜λŠ” SQL 쿼리 λ‚΄ ν‚€μ›Œλ“œ(SELECT, FROM λ“±)듀이 ν•˜μ΄λΌμ΄νŠΈ(색칠) ν‘œμ‹œμ™€ ν•¨κ»˜ 좜λ ₯λœλ‹€.

μ‚¬μš©ν–ˆμ„ λ•Œ μ˜ˆμ‹œλŠ” μ•„λž˜μ™€ κ°™λ‹€.

SQL λ‚΄ μ˜ˆμ•½μ–΄λ“€μ— ν•˜μ΄λΌμ΄νŠΈ ν‘œμ‹œκ°€ 된 λͺ¨μŠ΅

λ‹€λ§Œ 이 μ˜΅μ…˜μ€ IDEA, μ½˜μ†” ν™˜κ²½μ—μ„œλŠ” 잘 λ™μž‘ν•˜λ‚˜, λ§Œμ•½ ν…ŒμŠ€νŠΈ κ²°κ³Όλ₯Ό HTML ν˜•νƒœμ˜ 리포트둜 보게 되면 이 λ•ŒλŠ” μ•„λž˜μ²˜λŸΌ 좜λ ₯λ˜μ–΄ 되렀 가독성이 λ‚˜λΉ μ§€λŠ” 단점이 μžˆλŠ” κ²ƒμœΌλ‘œ 보인닀.

JUnit이 μƒμ„±ν•˜λŠ” Html λ¦¬ν¬νŠΈμ—μ„œ 좜λ ₯된 λͺ¨μŠ΅

 

4. properties.hibernate.generate_statistics: true

μƒˆλ‘­κ²Œ μ•Œκ²Œλœ μ˜΅μ…˜μ΄λ‹€.

이λ₯Ό ν™œμ„±ν™”ν•  μ‹œ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ—μ„œ μ‹€ν–‰λ˜λŠ” 쿼리듀에 λŒ€ν•œ κ°„λ‹¨ν•œ 톡계듀이 μ•„λž˜μ™€ 같이 좜λ ₯λœλ‹€.

ν•΄λ‹Ή μ˜΅μ…˜μ„ ν™œμ„±ν•˜λ €λ©΄ μΆ”κ°€μ μœΌλ‘œ μ•„λž˜ μ˜΅μ…˜μ„ μΆ”κ°€ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

org.hibernate.stat: {log_level}

이 μ˜΅μ…˜μ˜ μž₯점은 μ„±λŠ₯ 상 병λͺ©μ΄ λ°œμƒν•˜λŠ” 지점을 ν™•μΈν•˜κΈ°κ°€ μ‰½λ‹€λŠ” 점과, μ“°κΈ° 지연을 ν†΅ν•œ 배치 쿼리가 μ˜λ„λŒ€λ‘œ λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ”λ° μš©μ΄ν•˜λ‹€λŠ” 점이닀. 

특히 ν›„μžμ˜ κ²½μš°μ—”, λ‹¨μˆœ ν•˜μ΄λ²„λ„€μ΄νŠΈμ—μ„œ μ§€μ›ν•˜λŠ” λ‘œκ·Έλ‘œλŠ” μ‹€μ œλ‘œ 배치 쿼리가 μ‹€ν–‰λ˜λŠ”μ§€ ν™•μΈν•˜λŠ” 것이 쉽지 μ•Šμ€λ° 이λ₯Ό μ‚¬μš©ν•  경우 κ·Έ λ¬Έμ œκ°€ μ‰½κ²Œ ν•΄κ²°λœλ‹€.

 

5. org.hibernate: {log_level}

기쑴에 μ‚¬μš©ν•˜λ˜ μ˜΅μ…˜μ΄λ‹€.

ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν•  경우 ν•˜μ΄λ²„λ„€μ΄νŠΈμ—μ„œ λ°œμƒν•˜λŠ” λͺ¨λ“  둜그λ₯Ό(λ‘œκ±°μ—μ„œ org.hibernate.~ or o.h.~ 둜 좜λ ₯λ˜λŠ” λ‘œκ·Έλ“€) DEBUG 레벨둜 좜λ ₯ν•œλ‹€. 

이 μ˜΅μ…˜μ„ μ‚¬μš©ν•  경우, 기본적으둜 둜그 창이 ꡉμž₯히 풍성(?)해진닀. 이λ₯Ό ν†΅ν•˜λ©΄ ν•˜μ΄λ²„λ„€μ΄νŠΈκ°€ 좔상화 λ ˆμ΄μ–΄ μ΄λ©΄μ—μ„œ μˆ˜ν–‰ν•˜λŠ” 일듀이 λŒ€λΆ€λΆ„ 좜λ ₯λ˜μ–΄ 디버깅에 큰 도움이 λ˜μ§€λ§Œ, μ’€ κ³Όν•˜λ‹€κ³  느껴질 μˆ˜λ„ μžˆλ‹€. 

μ•„λž˜λŠ” ν•΄λ‹Ή μ˜΅μ…˜μ„ μΌ  λ’€ κ°„λ‹¨ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ 좜λ ₯λ˜λŠ” 둜그의 λŒ€λž΅μ μΈ 수λ₯Ό μ„Έλ³Έ 것이닀.

이 μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•˜λŠ” 것 만으둜, ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ 4개짜리 ν…ŒμŠ€νŠΈμ—μ„œ μ•½ 2000μ—¬κ±΄μ˜ λ‘œκ·Έκ°€ 좜λ ₯λœλ‹€.

 

6. org.hibernate.SQL: {log_level}

μƒˆλ‘­κ²Œ μ•Œκ²Œλœ μ˜΅μ…˜μ΄λ‹€.

ν•΄λ‹Ή μ˜΅μ…˜μ€ μœ„μ—μ„œ 이미 μ–ΈκΈ‰ν•œ 1. show-sql: true μ˜΅μ…˜κ³Ό λ™μΌν•œ 둜그λ₯Ό 좜λ ₯ν•œλ‹€. λ‹€λ§Œ 이 κ²½μš°μ—” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‚΄ μ„€μ •λœ 둜거λ₯Ό ν™œμš©ν•˜λ‹ˆ λ˜λ„λ‘μ΄λ©΄ 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μž.

 

7. org.hibernate.type.descriptor.sql.BasicBinder: {log_level}

기쑴에 μ‚¬μš©ν•˜λ˜ μ˜΅μ…˜μ΄λ‹€.

ν•΄λ‹Ή μ˜΅μ…˜μ˜ 역할은 좜λ ₯λ˜λŠ” SQL λ‘œκ·Έμ— μ‹€μ œλ‘œ μ–΄λ–€ 값듀이 λ°”μΈλ”©λ˜κ³  μžˆλŠ”μ§€ ν•¨κ»˜ 좜λ ₯ν•˜λŠ” 역할이닀. 이 μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•  경우 디버깅에 큰 도움이 될 수 μžˆλ‹€.

ν•˜μ§€λ§Œ 이번 κΈ°νšŒμ— ν™•μΈν•œ κ²°κ³Ό, μ΄μƒν•˜κ²Œλ„ 우리 ν”„λ‘œμ νŠΈμ—μ„œλŠ” λ™μž‘ν•˜μ§€ μ•Šμ•˜λ‹€. κ·Έ μ΄μœ λŠ” ν•˜μ΄λ²„λ„€μ΄νŠΈ 5.X λ²„μ „μ—μ„œ Deprecated λ˜μ—ˆκΈ° λ•Œλ¬Έ.... (ν˜„μž¬ ν”„λ‘œμ νŠΈμ˜ ν•˜μ΄λ²„λ„€μ΄νŠΈ 버전은 6.X)

λ”°λΌμ„œ ν•΄λ‹Ή μ˜΅μ…˜ λŒ€μ‹  μ•„λž˜μ˜ μ˜΅μ…˜μ„ ν™œμš©ν•  수 μžˆλ‹€.

org.hibernate.orm.jdbc.bind: {log_level}

이λ₯Ό μ‚¬μš©ν•  경우, μ•„λž˜μ²˜λŸΌ 쿼리가 좜λ ₯된 이후에 κ³§λ°”λ‘œ μ–΄λ–€ νŒŒλΌλ―Έν„°λ“€μ΄ μ‹€μ œλ‘œ 바인딩 λ˜λŠ”μ§€ 확인이 κ°€λŠ₯ν•˜λ‹€.

μ’€ 잘리긴 ν–ˆμœΌλ‚˜, 쿼리 둜그 이후에 μ–΄λ–€ 값듀이 νŒŒλΌλ―Έν„° μžλ¦¬μ— 바인딩 λ˜μ—ˆλŠ”μ§€ 좜λ ₯λ˜λŠ” λͺ¨μŠ΅

 

8. org.hibernate.orm.jdbc.bind: {log_level}

μƒˆλ‘­κ²Œ μ•Œκ²Œλœ μ˜΅μ…˜.

ν•˜μ΄λ²„λ„€μ΄νŠΈ 6버전 μ΄μƒμ—μ„œ 쿼리 νŒŒλΌλ―Έν„°λ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν•΄λ‹Ή μ˜΅μ…˜μ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

λ°”λ‘œ 직전 7.org.hibernate.type.descriptor.sql.BasicBinder μ±•ν„°μ—μ„œ 이미 μ„€λͺ…ν•˜μ˜€μœΌλ―€λ‘œ μ΄ν•˜ μƒλž΅.

 

9. org.hibernate.SQL_SLOW

μƒˆλ‘­κ²Œ μ•Œκ²Œλœ μ˜΅μ…˜.

ν•˜μ΄λ²„λ„€μ΄νŠΈ 5.4.5 버전 이상뢀터 μ‚¬μš©ν•  수 있으며, 이 μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•  경우 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‹€ν–‰λœ 느린 쿼리가 λ‘œκ·Έμ— 좜λ ₯λœλ‹€.

이 μ˜΅μ…˜μ„ μΆ”κ°€ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•„λž˜ μ˜΅μ…˜μ— λŒ€ν•œ μΆ”κ°€κ°€ ν•„μˆ˜μ μ΄λ‹€.

spring.jpa.properties.hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS: {느린 쿼리 νŒλ‹¨ κΈ°μ€€ ms}

이 μ˜΅μ…˜μ—μ„œ μ„€μ •ν•œ msλ₯Ό μ΄ˆκ³Όν•˜λŠ” 쿼리에 λŒ€ν•΄μ„œλ§Œ λ‘œκ·Έκ°€ 좜λ ₯λœλ‹€. 이 λ•Œ μ‹€ν–‰ μ‹œκ°„μ„ μΈ‘μ •ν•˜λŠ” 기쀀은 μ‹€μ œ 쿼리가 μ‹€ν–‰λœ μ‹œκ°„ λ§Œμ„ μΈ‘μ •.

 

κ²°λ‘  (μ‹€μ œ 적용 λ‘œκΉ… μ˜΅μ…˜)

1. Test 용 (λ³Έλ¬Έμ—μ„œ 닀룬 λ‚΄μš©λ“€λ§Œ μž‘μ„±)

# application.yml

spring:
  jpa:
    properties:
      hibernate:
        format_sql: true
        generate_statistics: true
        session.events.log.LOG_QUERIES_SLOWER_THAN_MS: 300
        ...
logging:
  level:
    org.hibernate.SQL: DEBUG
    org.hibernate.orm.jdbc.bind: TRACE
    org.hibernate.SQL_SLOW: INFO
    org.hibernate.stat: DEBUG
    ...

ν…ŒμŠ€νŠΈμ— ν™œμš©ν•  μ„€μ • νŒŒμΌμ€ μœ„μ™€ 같이 κ΅¬μ„±ν•΄μ£Όμ—ˆλ‹€. μ‰¬μš΄ 디버깅을 μœ„ν•΄ 거의 λͺ¨λ“  λ‘œκΉ…μ„ ν™œμ„±ν™” ν•˜μ˜€μœΌλ‚˜ μ•„λž˜ λ‘κ°œμ˜ μ˜΅μ…˜μ€ λΉ„ν™œμ„±ν™”ν–ˆλ‹€.

  • org.hibernate: {log_level}
  • properties.hibernate.highlight_sql: true

κ·Έ μ΄μœ λŠ”, μš°μ„  μ „μžμ˜ μ˜΅μ…˜μ€ 디버깅 μ‹œ 크게 ν™œμš©ν•˜μ§€ μ•ŠλŠ” λ‘œκ·Έλ“€λ„ λ„ˆλ¬΄ 많이 μ°νžŒλ‹€λŠ” 단점이 μžˆμ—ˆλ‹€. νŒ€μ›λ“€κ³Όμ˜ 디버깅 과정을 돌이켜보면, ν•΄λ‹Ή μ˜΅μ…˜μ„ 톡해 좜λ ₯λ˜λŠ” λ‘œκ·Έλ“€λ³΄λ‹€λŠ” μ‹€μ œ μ–΄λ–€ 쿼리와 μ–΄λ–€ νŒŒλΌλ―Έν„°λ‘œ 쿼리가 μ‹€ν–‰λ˜λŠ”μ§€μ™€ λ˜ν•œ org.springframework.orm, org.springframework.tracsaction μ˜΅μ…˜μ„ ν†΅ν•œ λ‘œκ·Έλ“€μ— 더 많이 μ˜μ‘΄ν•˜μ˜€κΈ° λ•Œλ¬Έμ— 이λ₯Ό 과감히 μ‚­μ œν•˜μ˜€λ‹€.

λ˜ν•œ sql ν•˜μ΄λΌμ΄νŒ… μ˜΅μ…˜μ€ Html λ¦¬ν¬νŠΈμ—μ„œ 가독성을 λ„ˆλ¬΄λ‚˜ λ–¨μ–΄λœ¨λ¦¬λŠ” 문제 λ•Œλ¬Έμ— ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œλŠ” μΆ”κ°€ν•˜μ§€ μ•Šμ•˜λ‹€.

 

2. Dev 용

# application.yml

spring:
  jpa:
    properties:
      hibernate:
        format_sql: true
        highlight_sql: true
        generate_statistics: true
        session.events.log.LOG_QUERIES_SLOWER_THAN_MS: 300
        ...
logging:
  level:
    org.hibernate.SQL: DEBUG
    org.hibernate.orm.jdbc.bind: TRACE
    org.hibernate.SQL_SLOW: INFO
    org.hibernate.stat: DEBUG
    ...

개발 ν™˜κ²½μš© 섀정은 μœ„μ™€ 같이 ν•΄μ£Όμ—ˆλ‹€. ν…ŒμŠ€νŠΈ 용 μ„€μ •μ—μ„œ highlight_sql μ˜΅μ…˜ λ§Œμ„ μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€.

 

3. Prod 용

# application.yml

logging:
  level:
    org.hibernate: ERROR
    ...

아직 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ„ κ΅¬μ„±ν•˜μ§€λŠ” μ•Šμ•˜μœΌλ‚˜, κ΅¬μ„±ν•˜κ²Œ λœλ‹€λ©΄ μœ„μ™€ 같이 ꡬ성할 것 κ°™λ‹€.

μ‹€μ œ ν™˜κ²½μ—μ„œλŠ” κΌ­ ν•„μš”ν•œ λ‘œκ·Έλ§Œμ„ 좜λ ₯ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— ν•˜μ΄λ²„λ„€μ΄νŠΈ λ‚΄μ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬ μ΄μƒμ˜ λ‘œκ·Έλ“€λ§Œ 좜λ ₯ν•˜λŠ” 것이 νƒ€λ‹Ήν•˜λ‹€κ³  μƒκ°ν–ˆλ‹€.

 

References

 

Logging Guide for Hibernate 4, 5 & 6 - Use the right config for dev and prod

How should you configure your Hibernate logging to find performance issues during development? What is the best configuration for production?

thorben-janssen.com

 

Hibernate ORM 6.1.7.Final User Guide

Fetching, essentially, is the process of grabbing data from the database and making it available to the application. Tuning how an application does fetching is one of the biggest factors in determining how an application will perform. Fetching too much dat

docs.jboss.org