JPA의 지연로딩

  • JPA에서 실제 데이터가 필요한 시점까지 데이터베이스 조회를 지연하는 기법
  • 엔티티를 처음 조회할 때는 연관된 데이터를 즉시 로드하지 않고, 그 연관된 데이터가 실제로 사용될 때 데이터베이스에서 조회하는 방식
  • 불필요한 데이터 조회를 줄여서 성능을 최적화하는데 유리하다.

지연로딩(Lazy Loading)의 기본동작.

  • 지연 로딩을 설정하면 연관된 엔티티나 컬렉션은 처음에 프록시 객체로 로드된다.
    • 프록시는 실제 엔티티를 대신하는 객체로, DB조회가 필요할 때 프록시가 실제 데이터를 조회하여 값을 제공
      • 처음 부터 연관된 데이터를 모두 로드하는것이 아닌, 실제 접근 시점에 DB에서 로드되도록 지연

자신과 연관된 엔티티를 실제로 사용할 때 연관된 엔티티를 조회하는 방식

  • 엔티티 A를 조회시 관련(Reference)되어 있는 엔티티 B를 한 번에 가져오지 않는다.
  • 프록시를 맵핑하고 실제 B를 조회할 때 쿼리가 나간다. 쿼리가 총 두 번 나간다. A조회시 한 번, B조회시 한 번