인프런 커뮤니티 질문&답변
findById 쿼리 질문
작성
·
336
·
수정됨
0
    @Test
    public void findMemberLazy(){
        //given
        //member1 -> teamA
        //member2 -> teamB
        Team teamA = new Team("teamA");
        Team teamB = new Team("teamB");
        teamRepository.save(teamA);
        teamRepository.save(teamB);
        memberRepository.save(new Member("member1", 10, teamA));
        memberRepository.save(new Member("member2", 20, teamB));
       
        //when
        Optional<Member> byId = memberRepository.findById(1L);
}위와 같은 코드가 있을때 memberRepository.findById(1L); 를 하면 저는 em.find를 통해서 영속성컨테스트를 조회하기 때문에 select쿼리가 안나간다고 생각이 들었습니다.
하지만 출력결과
   select
        m1_0.member_id,
        m1_0.age,
        m1_0.team_id,
        m1_0.username 
    from
        member m1_0 
    where
        m1_0.member_id=?select 쿼리가 나가는 것을 확인했습니다.
제 예전 질문에서는 JpaRepository에서의 Method Naming Query의 경우 JPQL로 조회를 하기 때문에 실행전 em.flush()가 일어나서 Direct로 DB에 쿼리가 날아가고 findById는 JpaRepository Interface의 target인 SimpleJpaRepository에 있기 때문에 em.find를 한다고 보았는데
왜 select 쿼리가 나갔는지 궁금합니다.






해결했습니다 감사합니다.