final class
-
final Class는 왜 JPA Entity가 될 수 없을까?Java/Spring-JPA 2021. 1. 31. 20:19
final class는 JPA Entity Class가 될 수 없다. 왜 그럴까? JPA는 DB에서 데이터를 조회한 후 엔티티를 생성할 때 지연 로딩이라는 방식을 사용한다. 지연 로딩이란? 해당 엔티티(테이블)와 관계(join)를 맺고 있는 엔티티(테이블)들에 대한 정보는 그 즉시 로딩되지 않고 getter 메소드가 호출되는 등 실제 사용될 때 로딩된다. 이러한 방식을 지연 로딩이라 한다. 지연 로딩 방식을 이용해 데이터를 조회하기 위해서, JPA는 프록시 객체라는 것을 생성한다. 프록시 객체는 간단히 말해서 엔티티를 상속해서 확장한 클래스이다. 하지만 final class는 상속될 수 없기 때문에 JPA는 그 final class를 확장해서 프록시 객체로 사용할 수가 없다. 따라서 JPA Entity로..