지연 λ‘œλ”©(Lazy) πŸ†š μ¦‰μ‹œ λ‘œλ”©(Eager)

nacSeo (λ‚™μ„œ)Β·2023λ…„ 3μ›” 18일
0

지식저μž₯μ†Œ

λͺ©λ‘ 보기
16/34

JPAλ₯Ό μ‚¬μš©ν•΄μ„œ 연관관계 맀핑 μ‹œ (fetch=fetchType.LAZY) λ˜λŠ” (fetch=fetchType.EAGER) 을 μ‚¬μš©ν•˜μ—¬ μ§€μ—°λ‘œλ”©κ³Ό μ¦‰μ‹œλ‘œλ”©μ„ μ„€μ •ν•  수 μžˆλ‹€.

μ§€μ—°λ‘œλ”©μ΄λž€ μš°μ„  μ‘°νšŒν•œ ν…Œμ΄λΈ”μ˜ 쿼리만 λ‚˜κ°€κ³  μ‹€μ œ 연관관계 λ§€ν•‘λœ μΏΌλ¦¬λŠ” μ‚¬μš©λ  λ•Œ λ‚˜κ°€κ²Œ λœλ‹€.

반면, μ¦‰μ‹œλ‘œλ”©μ€ ν•œλ²ˆμ— μ‘°νšŒν•œ ν…Œμ΄λΈ”μ˜ 쿼리와 연관관계가 λ§€ν•‘λ˜μ–΄ μžˆλŠ” ν…Œμ΄λΈ”μ˜ 쿼리가 같이 λ‚ λ € 데이터λ₯Ό ν•œ λ²ˆμ— λΆˆλŸ¬μ˜¨λ‹€.

λ¬Όλ‘ , μ‘°νšŒν•œ ν…Œμ΄λΈ”κ³Ό 연관관계가 λ§€ν•‘λœ ν…Œμ΄λΈ” ν•¨κ»˜ 자주 μ‚¬μš©λœλ‹€λ©΄ μ¦‰μ‹œλ‘œλ”©μ΄ μ’‹κΈ΄ ν•˜μ§€λ§Œ 치λͺ…적인 단점이 μ‘΄μž¬ν•œλ‹€.
λ°”λ‘œ N+1 λ¬Έμ œμ΄λ‹€.
쿼리 1개λ₯Ό λ‚ λ ΈλŠ”λ° ν•œ λ²ˆμ— 데이터가 λ‹€ μ‘°νšŒλ˜λ―€λ‘œ μΆ”κ°€ 쿼리가 Nκ°œκ°€ λ‚˜κ°„λ‹€λŠ” μ˜λ―Έλ‹€. μ‹€λ¬΄μ—μ„œλŠ” ν…Œμ΄λΈ”μ΄ 정말 많기 λ•Œλ¬Έμ— 가급적 지연 λ‘œλ”©μ„ μ‚¬μš©ν•˜λŠ” κ±Έ ꢌμž₯ν•˜κ³  μžˆλ‹€.

profile
λ°±μ—”λ“œ 개발자 κΉ€μ°½ν•˜μž…λ‹ˆλ‹€ πŸ™‡β€β™‚οΈ

0개의 λŒ“κΈ€