Spring Boot/JPA
entity 기본 생성자 in jpa
최-코드
2024. 10. 11. 16:19
상황 : entitiy를 생성하고 기본 생성자 없이 애플리케이션을 실행했더니 에러가 발생했다.
원인 : lazy 로딩 전략을 사용할 때 해당 entity에 대한 proxy를 만든다. 이 때 기본 생성자를 통해 entitiy에 대한 객체를 만들고, proxy로 감싸기 때문에 기본 생성자는 꼭 만들어줘야 한다.
해결책 : entity에 기본 생성자를 만들어주면 된다.
추가) proxy 객체는 entity 객체를 상속하기 때문에 public 또는 protected 접근 제어자를 가진 기본 생성자가 필요하다.
public class User$HibernateProxy extends User {
private LazyInitializer initializer;
public User$HibernateProxy() {
super(); // 부모(User)의 기본 생성자가 필요함
}
@Override
public String getName() {
// Lazy Loading: 실제 DB 조회 수행
return initializer.load().getName();
}
}