[JPA] @OneToOne 일대일 관계에서 Lazy Loading 동작하지 않는 이슈

uijin kim·2023년 6월 15일
0

JPA를 사용할 때 편리한 사용 뒤에 숨겨진 성능 관리를 항상 신경쓰지 않으면 안된다.
JPA 사용시 일반적으로 연관관계 엔티티 조회시 연관으로 놓여있는 엔티티들에 대해 Lazy Loading을 옵션으로 두고 지연전략을 사용하게 된다.

JPA에서 1:N(일대다) 혹은 N:1(다대일)의 경우 항상 N쪽이 외래 키를 가지고 있지만, 일대일 관계에서는 주 테이블이나 대상이 되는 테이블 양쪽 모두 외래 키를 가질 수 있다.

데이터베이스의 경우 컬렉션을 담을 수 없기 때문에 1:N 혹은 N:1 에서 1이 되는 쪽이 외래 키를 가지는 것은 불가능 하다.

이때 @OneToOne 관계에 있는 연관관계의 경우 Lazy Loading 적용이 안되는 이슈가 있다.
정확히는 외래 키를 가지고 있는 엔티티(연관 관계의 주인)에서는 외래 키를 가지지 않은 쪽에 대한 지연 로딩은 동작하나, 외래 키를 가지지 않은 쪽에서 조회할 경우 외래 키를 가지고 있지 않은 테이블에 대해서 지연 로딩이 동작하지 않게 된다.

예시

profile
느리더라도, 꾸준하게

0개의 댓글