페치조인 별칭
1281
작성한 질문수 56
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)
[질문 내용]
질문 1 ============================================
별칭과 관련하여 영한님의 댓글을 찾아보던 도중

라는 글이 있습니다.
제가 이해한 바로는
1:N 이던 N:1 이던 1:1 이던
페치조인할때 별칭은 사용하지 않는것이 좋지만
페치 조인시 별칭을 사용했을때와 별칭을 사용하지 않았을때와 의 데이터가 일치한다면(정합성) 사용 할수 있다
이렇게 이해를 했는데 맞나요 ?
질문 2 ============================================
페치조인시 1:N 에서 페이징을 사용할수 없는 이유는
페치조인의 메커니즘 자체가 1:N 이면 N 만큼 데이터를 다 가지고 있어야 하는데
ex) @OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
(Team 은 페치조인시 members 의 뻥튀기 된 데이터를 모두 가지고 있어야한다)
그런데 이때 페이징을 실행하면 뻥튀기된 데이터를 가지고 있을수가 없다.
그래서 JPA는 메모리에 모든 정보를 끌어모아 저장 시킨후 메모리에서 페이징 처리를 실행 하기 때문에 메모리 부족 현상이 나타날수 있다
이렇게 이해를 했는데 맞나요 ? (질문1,2)
======================질문3
페이징 처리를 위해
N:1 을 1:N 으로 바꿔서 페치조인을 하면 되는데
막상 이 쿼리를 디비에 실행해도 둘다 데이터가 각 3건씩 똑같이 나오는게 맞나요 ? (뻥튀기 가 일어나면 데이터가 더많아야 하는게 아닌가요 ? 1:n 조인이)
각각 1:N , N:1 페치조인 실행한 결과

[데이터 뻥튀기는 -> 데이터 베이스 쿼리는 동일하게 나오나, 자바 객체에서 뻥튀기 ->[중복] 현상이라고 생각하면 되는건가요 ??]
이 부분은 몆번을 봐도 햇갈리네요
답변 1
1
안녕하세요. 기팝님
데이터 뻥튀기 라는 것은 SQL JOIN의 결과로 만들어지는 것입니다.
조인을 하면 데이터가 N에 맞추어서 늘어나게 되지요.
SQL JOIN 부분을 먼저 꼭! 공부하시고 이해하시는 것이 필요합니다.
이 부분을 먼저 이해하셔야 질문에 대해서 명확한 이해가 가능해집니다.
질문1
네 맞습니다.
질문2
게시판(1)과 댓글(N)이 있다고 가정을 하겠습니다. 게시판과 댓글을 조인하게 되면 게시판을 기준으로 하는 페이징이 불가능해집니다.
왜냐하면 게시판이 아니라 댓글 수 만큼 곱해서 데이터가 나오는데, 여기에 페이징을 위해 10건을 데이터를 받게 되면 게시판이 몇게가 나올지 예상이 안됩니다. 게시판이 1개가 나올 수도 있고, 10개가 나올 수도 있습니다.
SQL문을 실행해서 직접 만들어보시면 이해가 되실꺼에요.
따라서 모든 데이터를 다 확인하지 않는 이상 페이징이 불가능해집니다. 이것은 SQL문 자체의 한계로 이해하시면 됩니다.
질문3
SQL JOIN 자체를 이해하셔야 합니다.
감사합니다.
벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?
0
29
2
inheritance startegy 선택시 고려사항
0
22
1
Entity 동등성 비교
0
21
1
실무 조언 관련 질문입니다.
0
47
1
H2데이터베이스 파일 생성
0
56
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
53
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
55
1
JPQL 메소드와 락
0
55
1
Delivery @OneToOne
0
60
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
94
2
UnsupportedOperationException 발생
0
86
3
H2 Database 연결이 안됩니다.
0
95
2
연관관계 매핑 질문드립니다.
0
85
2
h2데이터베이스 실행오류
0
108
2
persistence.xml
0
108
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
80
1
영속성 컨텍스트
0
66
1
JPA 프록시
0
97
1
Native Query와 MyBatis
0
70
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
87
1
임베디드 타입 예시 코드 관련 질문
0
115
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
95
3
인텔리제이 패키지 커서 단축키 질문
0
108
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
145
1





