inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

실전 예제 5 - 연관관계 관리

OneToOne 연관관계 주인아닌 테이블에서 LAZY 로딩 관련 질문

해결된 질문

359

명아주

작성한 질문수 8

0

[질문 내용]
안녕하세요! 강의 들으면서 열심히 배우고 있습니다!
이번에 질문드리는 부분은 저번 강의의 프록시의 한계(?)와 관련된 질문입니다.
OneToOne 관계에서 연관관계 주인이 아닌 테이블에서 LAZY로딩을 하더라도 프록시의 한계로 인해 쿼리가 두번나가는 것을 배웠었습니다.
 
거의 모든 경우에 대해 LAZY를 설정하는데, 이렇게 OneToOne 연관관계주인이 아닌 테이블에서는 LAZY를 설정하는게 오히려 성능 하락을 불러일으킬것 같다는 생각이 들어서 질문드립니다.
 
실제 이번 강의에서 Delivery 엔티티에서 Order를 LAZY 로딩 적용해주셨는데 임시로 DeliveryStatus는 주석처리 해놓고 Delivery를 em.find 로 조회해보면 쿼리가 두번 나가는 것을 확인했습니다.(저번 강의에서 말씀해주신 프록시의 한계)
 
그래서 아직 짧은 제 식견으로는 이런 경우엔 EAGER를 하는게 오히려 성능상 좋지 않을까? 라는 생각을 했는데요.
 
실무적인 관점에서 어떤식으로 푸시는지 궁금합니다!
 
감사합니다.
명아주 드림

OnetoOne lazy JPA java eager

답변 1

1

김영한

안녕하세요. 명아주님

말씀하신 것 처럼 OneToOne에서 LAZY를 사용할 수 없는 경우에는 EAGER를 사용한다고 해서 더 나빠지는 것은 없을 것 같네요.

혹시 관련해서 다른 생각이 있으신 분들은 답변 부탁드립니다.

감사합니다.

0

명아주

답변 감사합니다!

JPQL 로 리스트 조회했을땐 어떻게 되는지 확인해보고 추가 댓글 달겠습니다!

감사합니다.

0

명아주

JPQL 로 리스트를 조회했을 때도 마찬가지로 프록시의 한계를 피할 수 없었습니다.

리스트 조회 시, join fetch를 사용하는게 N+1 이슈를 피할 수 있는 방법인것 같습니다.

혹은, 아예 mappedBy를 생략하고 쓰게되면 LAZY로도 동작이 가능했습니다.

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

23

2

inheritance startegy 선택시 고려사항

0

22

1

Entity 동등성 비교

0

18

1

실무 조언 관련 질문입니다.

0

46

1

H2데이터베이스 파일 생성

0

56

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

52

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

51

1

JPQL 메소드와 락

0

55

1

Delivery @OneToOne

0

60

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

93

2

UnsupportedOperationException 발생

0

86

3

H2 Database 연결이 안됩니다.

0

92

2

연관관계 매핑 질문드립니다.

0

85

2

h2데이터베이스 실행오류

0

107

2

persistence.xml

0

106

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

80

1

영속성 컨텍스트

0

65

1

JPA 프록시

0

94

1

Native Query와 MyBatis

0

68

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

85

1

임베디드 타입 예시 코드 관련 질문

0

114

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

94

3

인텔리제이 패키지 커서 단축키 질문

0

108

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

143

1