- λ§ κ·Έλλ‘ ν΄μν΄λ³΄λ©΄ μΈμ μ view λ μ΄μ΄μλ μ΄μ΄λλ€.
- μΈμ μ λ°μ΄ν°λ² μ΄μ€μ μ°κ²°λ κ°μ²΄μ sessionμ μλ―Ένλ λ―νκ³ .
- λ³΄ν΅ μ΄λ¬ν μΈμ μ νΈλμμ κ³Ό μλͺ μ£ΌκΈ°λ₯Ό κ°μ΄ νλ κ±Έλ‘ μκ³ μλλ°, μ΄ λΆλΆμ λμ΄μ μ¬μ©ν μ μλλ‘ λμμ£Όλ κΈ°μ μ λ§νλ λ―.
LazyInitializationExceptionμλ λ§μ΄ μ°κ΄μ΄ μλ ν€μλ μ.- μ΄ μλ¬λ νΈλμμ λ²μλ₯Ό λμ΄μ, lazy fieldμ μ κ·Όνλ € νλ©΄ λμ Έμ§λ μλ¬ μΈλ―.
- Springμμλ
Hibernate.supportν¨ν€μ§ μλμ μ΄ κΈ°λ₯μ λμμ£Όλ ν΄λμ€κ° μλλ―. - OpenSessionInViewInterceptor
- μμ±μμλ
sessionFactoryκ° λ€μ΄κ°. - Spring web request interceptor that binds a Hibernate Session to the thread for the entire processing of the request.
- μΉ requestκ° λ€μ΄μμ λ, λ§€μΉλλ μ€λ λμ λ°μΈλ©λλ sessionμ κ°μ§κ³ μλ interceptor classμΈλ―.
- μμ±μμλ
- μ΄λ»κ² μ€νλ§μμ μ΄μ©ν μ§ μ 리ν΄λ³΄λ©΄,
- request μμμ, μ€νλ§μ
OpenSessionInViewInterceptorμμ±. μ΄ μμ²μ λ§€μΉλλ interceptor ν΄λμ€λ₯Ό λ§λ€μ΄λλλ―. - μ΄ν리μΌμ΄μ μμ, μΈμ μ΄ νμν΄μ§λ νΉμ μμ μ΄ μλ€λ©΄ (νΈλμμ λ²μλ₯Ό λ²μ΄λ Lazy loading), OpenSessionInViewInterceptor μμ λ°νλ°μ μΈμ μ ν΅ν΄ ν΄κ²°νλ λ―
- request μμ λ§μ§λ§μλ, μ¬μ©λμλ μΈμ μ λͺ¨λ μ 리νλ κ³Όμ μ΄ μκ³ .
- request μμμ, μ€νλ§μ
- κ·Έλ¬λκΉ ν΅μ¬μ, μ΄λ¦ μ²λΌ view λ¨μμ (html...) μμλ§ μ¬μ©λλ κ²μ΄ μλ λ―.
- νΈλμμ
λ²μλ₯Ό λ²μ΄λ μ κ·Όνλ κ²½μ°, μ¬μ©λκ² λλλ―.
-
osivλ₯Ό μ¬μ©νλ©΄ μ’μ μ μ μ°μ νΈν¨ μ¦
LazyInitializationExceptionμ κ±±μ νμ§ μμλ λ¨.- λν Session μ μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬ν΄μ£ΌκΈ° λλ¬Έμ.
-
osiv κ° μΌμ Έμλ μνμμ νΈλμμ λ²μ λ°μμ lazy fieldλ₯Ό μ‘°ννλ€λ©΄ μλμ κ°μ λ¬Έμ κ° λ°μν μ μμ.
- exhausting the Connection Pool
- μΈμ μ΄ request μ’ λ£μκΉμ§ λ¨μμμ μλ μκΈ° λλ¬Έμ, μμ κ°μ λ¬Έμ κ° λ°μν μ μμ.
- λ μ¬ν΄μ§λ©΄, application μλ΅μ΄ μμ μλλ λ¬Έμ λ μμ μ μμ.
- unnecessary Queries
- λΆνμν μΏΌλ¦¬κ° λ°μνλ€.
- μ¦ μ§μ§ νμν νλ μ΄μΈμ λ€λ₯Έ νλ (lazy) μ κ·Όλ§μΌλ‘λ κ°λ°μκ° μκ°νμ§ λͺ»ν μΏΌλ¦¬κ° μ€νλ μ μμ.
- μ΄λ¬ν 쿼리λ auto-commit λͺ¨λλ‘ μ€νλ¨.
- exhausting the Connection Pool
-
κ·Έλ¦¬κ³ osivκ° κΊΌμ Έμλ€λ©΄, νΈλμμ λ²μ μμμ, νμν νλ (lazy field) λ₯Ό initialize ν΄μ€μΌν¨.
- κ·Έ κ³Όμ μμ
Hibernate.initialize()λ₯Ό μ΄μ©νλλ―.
- κ·Έ κ³Όμ μμ
- osivλ₯Ό μ΄μ©νλ κ±° λ§κ³ , λμμ?
@EntityGraphλΌλ μ΄λ Έν μ΄μ μ, 미리 fetchνκ³ μΆμ μμ±μ κΈ°μ¬ν¨μΌλ‘μ¨, 쿼리 λ 벨μμ νμν νλμ λν μ 보λ₯Ό λͺ¨λ κ°μ Έμ€λλ‘ νλ λ°©λ²
- μμμλ μΈκΈνμ§λ§, μ‘°ν νμ, ν΄λΉ μν°ν°μ Lazy field (μΆνμ νμν νλ) μ hibernate μμ μ 곡νλ λ©μλλ₯Ό μ΄μ©. Lazy ν 쿼리λ₯Ό λ°μ μμΌμ νμν νλλ§ μ‘°ννλλ‘ νλ λ°©λ².
- μ΄ λ°©λ²μ μΆκ°μ μΈ μΏΌλ¦¬(μ΅μν ν κ° μ΄μ)κ° λ°μλλ€λ λ¨μ μ΄ μμ.
- νλμ 쿼리μ, νμν μ 보λ₯Ό λͺ¨λ κ°μ Έμ€κ² ν¨.
- Entity graphμ κ±°μ λμΌν λͺ©μ μΌλ‘ 보μ΄μ§λ§, μλ§ λ°©λ²λ‘ μμ μ°¨μ΄κ° μμλ―.
- λ κ°μ λ°©λ²μ μ΄λ€ μ°¨μ΄κ° μλμ§ μμ보면 μ’μλ―.
- Spring Data JPA and Named Entity Graphs,JPA Join Types
