OneToOne 양방향 관계 시 Lazy 로딩은 어떻게 되나요?

  • 연관관계의 주인인 엔티티 에서는 지연 로딩이 동작하지만, 연관 관계의 주인이 아닌 엔티티에서는 지연 로딩이 동작하지 않는다.

  • Lazy 로딩 시 null 또는 프록시 객체가 할당되어야 한다.

  • 연관 관계의 주인인 엔티티는 외래 키(FK)를 통해 연결된 객체가 있는지 없는지 알 수 있기 때문에 null이나 프록시 객체를 할당할 수 있다.

  • 하지만 연관 관계의 주인이 아닌 엔티티는 연결된 객체를 알 수 있는 방법이 없기 때문에 여부를 알 수 없다.(프록시가 유연하게 동작해주지는 않는다.)

  • 여부를 알기 위해서는 실제 DB를 조회해야 하기 때문에 지연 로딩으로 설정해도 즉시 로딩으로 동작하는 것이다.

참고로 OneToMany에서는 정상적으로 동작한다. 왜냐하면 컬렉션은 빈 컬렉션을 표현할 수 있기 때문이다.

Last updated