inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

fetch join 과 일반 join 에서 궁금한점 있습니다..

해결된 질문

188

물미구

작성한 질문수 6

0

post와 user 가 다 대 일 관계이고, lazy로딩을 걸어놓은 상태에서,

post와 연관된 user의 정보를 가져오고싶을때,

일반 join jpql : select u.nickName, u.age ... from Post p join p.user u;

fetch  join jpql : select p from Post join fetch p.user; 

둘 다 n+1 문제를 예방할 수 있는 건가요?

 

JPA java

답변 1

0

y2gcoder

안녕하세요. smartdeveloper님, 공식 서포터즈 y2gcoder입니다.

어떠한 목적으로 사용하실 지는 모르겠으나 fetch join과 일반 join을 통한 차이를 인지하고 사용하시면 될 것 같습니다. 밑의 링크를 참고해주세요!

https://cobbybb.tistory.com/18


감사합니다.

0

물미구

답변 감사합니다!!

일반 조인의 경우 select 절에서 지정한 엔티티만 조회하고

페치 조인의 경우 select 절에서 지정한 엔티티와 연관된 엔티티까지 한번에 조회하는 건데..

select m,t from Member m join m.team t; 

이런 식으로 일반조인쿼리를 날리면,

결국 select 절에서 지정한 member와 team 엔티티가 모두 조회되는것아닌가요??

0

y2gcoder

그런 식으로 하는 것은 생각해보지 못했는데, 감사합니다 ㅎㅎ
질문이 있습니다. 

반환타입을 DTO로 하시는 걸까요? 아니면 위에 처음 질문으로 생각해본다면 Post를 중심으로 해서 생각하셨을까요?(아마 위 JPQL 이라면 반환 타입이 엔티티로 안될 가능성이 많고 DTO로 해야할 것으로 보입니다.)

그리고 이제보니 위에 적어주셨던 일반 join문을 보니 저렇게 한다면 아마 dto로 한방쿼리로 나올 것 같습니다. 
꼼꼼하게 보지못한 점, 죄송합니다 ㅜ

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

0

58

2

inheritance startegy 선택시 고려사항

0

42

1

Entity 동등성 비교

0

47

1

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

0

68

1

H2데이터베이스 파일 생성

0

78

2

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

0

70

2

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

0

63

1

JPQL 메소드와 락

0

63

1

Delivery @OneToOne

0

73

1

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

0

105

2

UnsupportedOperationException 발생

0

97

3

H2 Database 연결이 안됩니다.

0

103

2

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

0

95

2

h2데이터베이스 실행오류

0

116

2

persistence.xml

0

121

2

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

0

90

1

영속성 컨텍스트

0

77

1

JPA 프록시

0

107

1

Native Query와 MyBatis

0

83

1

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

0

97

1

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

0

126

3

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

0

103

3

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

0

113

2

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

0

156

1