저는 team query가 나가지 않습니다만...
252
작성한 질문수 13
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
Team team = new Team();
team.setName("teamA");
em.persist(team);
Member member = new Member();
member.setUsername("member1");
member.setAge(10);
member.changeTeam(team);
em.persist(member);
List<Member> result = em.createQuery("select m from Member m inner join m.team t", Member.class)
.getResultList();
tx.commit();
} catch (Exception ex) {
ex.printStackTrace();
tx.rollback();
} finally {
em.close();
emf.close();
}
}
}
저는 Member entity에 team을 LAZY 로 세팅하지 않아도
Hibernate: /* select m from Member m inner join m.team t */ select member0_.id as id1_0_, member0_.age as age2_0_, member0_.TEAM_ID as TEAM_ID4_0_, member0_.username as username3_0_ from Member member0_ inner join Team team1_ on member0_.TEAM_ID=team1_.id
이 쿼리만 나갑니다.
강사님는 team query가 나가는 것으로 영상에 찍었는데 저와 좀 다르네요.
답변 1
2
안녕하세요. 용상님^^
JPQL 쿼리가 조인이 되어 있기는 하지만 결론적으로 fetch join이 아니므로, member만 조회합니다.
JPA가 member를 조회하고 보니, member->team이 즉시로딩으로 설정되어 있습니다. team을 찾기 위해 team query가 나가는 것이 맞습니다. 그런데 보내주신 코드를 보면 처음에 teamA을 영속성 컨텍스트에 저장했습니다.
즉시로딩도 지연로딩과 같이 먼저 영속성 컨텍스트에서 찾고 없으면 데이터베이스에 쿼리를 날립니다!
이 예제에서 teamA는 영속성 컨텍스트에 이미 보관되어 있기 때문에 데이터베이스를 조회할 필요가 없었던 것이지요.
JPQL을 실행하기 직전에 다음 코드를 넣어보시면 영속성 컨텍스트에 teamA가 없으므로 team query가 나가는 것을 확인할 수 있습니다.
em.flush();
em.clear();
감사합니다^^
0
추가적으로 [질문자님 코드에서]Member 엔티티를 구해오는 쿼리가 나간 이유는 영속성 컨텍스에 엔티티가 있어도
JPQL에선 무조건 select 문이 나가서
Member 엔티티를 구해오는 쿼리가 나간거였습니다.
맞나요 ??
inheritance startegy 선택시 고려사항
0
5
0
Entity 동등성 비교
0
14
1
실무 조언 관련 질문입니다.
0
41
1
H2데이터베이스 파일 생성
0
51
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
48
1
JPQL 메소드와 락
0
52
1
Delivery @OneToOne
0
57
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
89
2
UnsupportedOperationException 발생
0
82
3
H2 Database 연결이 안됩니다.
0
89
2
연관관계 매핑 질문드립니다.
0
82
2
h2데이터베이스 실행오류
0
105
2
persistence.xml
0
103
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
77
1
영속성 컨텍스트
0
62
1
JPA 프록시
0
90
1
Native Query와 MyBatis
0
63
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
83
1
임베디드 타입 예시 코드 관련 질문
0
112
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
91
3
인텔리제이 패키지 커서 단축키 질문
0
106
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
136
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
68
1





