강의 15분경 즉시로딩 실행결과 질문입니다.
450
작성한 질문수 8
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
MemberTest 테스트클래스
testEntity() 코드입니다.
Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
em.persist(teamA);
em.persist(teamB);
Member member1 = new Member("member1", 10, teamA);
Member member2 = new Member("member2", 20, teamA);
Member member3 = new Member("member3", 30, teamB);
Member member4 = new Member("member4", 40, teamB);
em.persist(member1);
em.persist(member2);
em.persist(member3);
em.persist(member4);
//초기화
em.flush();
em.clear();
List<Member> members = em.createQuery("select m from Member m ", Member.class)
.getResultList();
for (Member member : members) {
System.out.println("member = " + member);
System.out.println("-> member.team = " + member.getTeam());
}처음에 즉시로딩 실행결과로
멤버 조회 쿼리 하나랑
각각 팀 조회 쿼리 +N번 (여기서는 2번) 나가는 것을 확인했습니다.
지연로딩으로도 쿼리실행시점 문제만 다르지 똑같이 member.getTeam() 할때 team쿼리가 나가는 것을 확인했습니다.
N+1문제를 해결하기 위해 페치조인을 한다는것은 강의와 학습을 통해 알게되었습니다.
질문이있는데요
처음에 즉시로딩할때 조인쿼리가 안나가고
왜 따로 member, team쿼리가 나간것일까요?
즉시로딩도 N+1문제가 발생하는것이 맞나요?
수정
단건조회 시 즉시로딩으로 left outer join 으로 member와 team이 함께 조회되는것을 확인했습니다.
단건조회가 아니라 memberRepository.findAll() 메소드나 JPQL (select m from Member m) 인경우에는 member와 team이 같은 한 쿼리가 아니라
따로 조회되는 것인가요? 왜 List를 조회할때에는 같이 join해서 쿼리를 날리지않는것일까요?
답변 2
0
안녕하세요. ktk7167님, 공식 서포터즈 David입니다.
아래 글 답변을 참고해 주세요:)
https://www.inflearn.com/questions/39516
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
- 강의 내용과 관련된 질문인가요? (예/아니오)
- 예, 강의 내용과 관련된 질문이네요.
- 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
- 예, 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?
- 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
- 예, 질문 잘하기 메뉴얼을 읽어보셨나요?
아래는 제가 하실 질문 내용에 대한 답변입니다.
다음과 같이 MemberTest 클래스의 testEntity() 코드가 있습니다.
Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
em.persist(teamA);
em.persist(teamB);
Member member1 = new Member("member1", 10, teamA);
Member member2 = new Member("member2", 20, teamA);
Member member3 = new Member("member3", 30, teamB);
Member member4 = new Member("member4", 40, teamB);
em.persist(***기존 코드 누락됨***)
위 코드에서 em.persist() 메서드로 Member 객체를 영속화 하는 부분이 누락되어 있습니다.
수정된 코드는 아래와 같이 em.persist() 메서드로 Member 객체를 영속화 하시면 됩니다.
em.persist(member1);
em.persist(member2);
em.persist(member3);
em.persist(member4);
이렇게 수정하신 후 실행하시면 원하시는 결과를 얻으실 수 있을 거예요. 추가적인 질문이 있으시면 언제든지 물어보세요.
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
69
1
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
107
3
MemberRepository 구현체
0
58
1
pdf 표현 질문드립니다.
0
62
1
로그가 남지 않는 문제.
0
81
1
테스트 라이브러리가 강의는 junit4가 맞나요??
0
70
2
pdf 파일과 차이점이 있는 것같은데 문제 없나요?
0
72
2
@PrePersist, @PreUpdate 호출 시점 질문드립니다.
0
91
2
Sort 인터페이스는 잘 사용 안하나요?
0
52
1
스캔대상 질문드립니다.
0
46
1
하이버네이트6에서의 최적화에 이은 질문
0
85
1
save() vs saveAndFlush DB 통신 횟수
0
54
1
순수 JPA 리포지토리 코드 수정부분
0
86
2
bulk연산 후 flush하는 이유를 모르겠어요
0
152
3
bulk insert 질문입니다.
0
178
2
교만했던 것 같아요.
0
147
1
RESTful 강의는 안하시는 건지 궁금합니다.
0
147
2
동적 테이블에 대한 질문
0
86
1
영속성 전이와 연관관계
0
130
2
강의 10:25 질문
0
74
1
단건 update 질문
0
95
2
엔티티 와 도메인의 경계
0
127
1
UsernameOnlyDto 타입 type mismatch 오류
0
119
1
Projection 개념과 데이터 전달과정에 대해 질문 있습니다.
0
136
1





