LazyInitializationException
νμ¬ λ‘κ·ΈμΈν μ μ μ μ μ κ°μ²΄λ₯Ό getLoginUser() λ‘ κΊΌλ΄μ μ°λ €κ³ νλλ°β¦
public class AuthUtil {
private final TokenUtil tokenUtil;
private final UserRepository userRepository;
public Long getLoginUserIndex() {
User user = getLoginUser();
Long userId = user.getId();
return userId;
}
public User getLoginUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Object principal = authentication.getPrincipal();
return (User) principal;
}
}
Java
볡μ¬
LazyInitializationException μ΄ λ°μ νμ΅λλ€. κ·Έλμ μλμ κ°μ΄ μλ‘μ΄ μ½λλ₯Ό μμ±ν΄μ£Όλ ν΄κ²° λμλλ°μβ¦ Β λλ체 μ κ·Έλ¬λ κ±ΈκΉμ?
public User getLoginUserForLazy() {
Long id = getLoginUserIndex();
User user = userRepository.findById(id).get();
return user;
}
Java
볡μ¬
Hibernate μμμ μ§μ° λ‘λ©κ³Ό μΈμ
β’
μΈμ
μ λ³Έμ§μ μΌλ‘ μν°ν°κ° μ μ₯λκ³ κ΄λ¦¬λλ 컨ν
μ€νΈ λλ λ²νΌμ
λλ€. μΈμ
μ΄ λ«ν νμ ν΄λΉ μΈμ
λ΄μ μ΄κΈ°ν(λ‘λ)λμ§ μμ μν°ν°μ μ§μ° λ‘λ μμ±μ μ κ·Ό νλ €κ³ νλ©΄ LazyInitializationException μ΄ λ°μν©λλ€.
μ§μ°λ‘λ©κ³Ό μΈμ
μ λν΄ κΈ°λ³Έμ μΈ μ¬νμ μμλ€λ©΄ λ€μ λ‘μ§μ μ°¬μ°¬ν μ΄ν΄λ³΄κ² μ΅λλ€.
νμ¬ λ‘κ·ΈμΈν μ μ μ μ 보λ₯Ό 컨ν
μ€νΈ νλμμ κΊΌλ β μ΄λ₯Ό μλΉμ€ λ‘μ§μμ μ¬μ©νλ € ν¨ β LazyInitializationException λ°μ
λλ΅ μ΄λ° νλ‘μ° μΈλ°μ. μ κ·Έλ¬μκΉμ?
μΈμ μ λ²μμ λν΄ νμ νκΈ°.
ν΄λ΅μ μ΄κ³³μ μμ΅λλ€. μΈμ
μ μμ²μ μμμμ μ΄λ¦¬λ©°, μμ²μ΄ λλ λ λ«νλλ€. μλΉμ€ λ‘μ§ μμ getLoginUser() λ©μλλ₯Ό μ¬μ©ν΄ μ¬μ©μ μ 보λ₯Ό κ°μ Έμ€μ§λ§, μ΄ μ 보λ μ΄μ Hibernate μΈμ
μμ λ‘λ λ κ²μ
λλ€. μ΄ν Hibernate μΈμ
μ μ’
λ£λμκΈ° λλ¬Έμ μ°κ΄λ μν°ν°μ λν μ§μ° λ‘λ©μ μλν λ LazyInitializationException μ΄ λ°μν©λλ€. μ¦ κ°μ Έμ¨ κ°μ²΄λ₯Ό μ¬μ©νμ¬ μ°κ΄λ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ € ν λ μΈμ
μ΄ μ΄λ―Έ λ«ν μκΈ° λλ¬Έμ νμν λ°μ΄ν°λ₯Ό κ°μ Έμ¬ μ μμ΅λλ€. μ΄λ₯Ό μν΄μλ ν΄λΉ κ°μ²΄λ₯Ό λ€μ μ΄κΈ°ν ν΄μ€μΌ ν©λλ€.
public User getLoginUserForLazy() {
Long id = getLoginUserIndex();
User user = userRepository.findById(id).get();
return user;
}
Java
볡μ¬
μμ κ°μ λ©μλλ₯Ό μ¬μ©νλ€λ©΄ userRepository.findById(id).get()μ μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€μμ User μν°ν°λ₯Ό λ€μ κ°μ Έμ΅λλ€. λλ¬Έμ LazyInitializationException λ¬Έμ λ₯Ό ννΌν μ μμ΅λλ€. μ΄λ‘ μΈν΄ μ§μ° λ‘λλ μμ±μ μ κ·Όμ΄ κ°λ₯ν©λλ€.