인프런 커뮤니티 질문&답변

김지훈님의 프로필 이미지
김지훈

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 기능 테스트

영속성 컨텍스트 질문

작성

·

211

2

안녕하세요 영한님

회원가입 테스트 부분에서 궁금한 점이 생겼습니다.

meber를 persist해서 영속성 컨텍스트에 넣고 findOne으로 조회해서 가져오면, 해당 member는 1차 캐시에 존재하기 때문에 select 쿼리가 날아가지 않을 것 같은데 왜 날아가는지가 궁금합니다.

놓치는 부분이 있을까 해서 활용편 까지 듣고 복습중인데, 다시 보니 처음에는 생각하지 못한 궁금증이 생기네요

좋은 강의 감사드립니다

답변 4

3

김지훈님의 프로필 이미지
김지훈
질문자

아 중복 회원을 검사하는 메소드 때문에 발생한 쿼리군요 죄송합니다 ㅜㅜ

김영한님의 프로필 이미지
김영한
지식공유자

ㅎㅎ 네

드리고 싶은 조언은 이렇게 의심이 되면 항상 코드로 직접 돌려보면서, 찾아보아야 완전히 본인 것이 됩니다^^!

화이팅!

1

저도 select쿼리가 왜나가지 싶었는데 그런이유가있었네요 감사합니다

0

김지훈님의 프로필 이미지
김지훈
질문자

강의 5:59초 보시면

select

        member0_.member_id as member_i1_4_,

        member0_.city as city2_4_,

        member0_.street as street3_4_,

        member0_.zipcode as zipcode4_4_,

        member0_.name as name5_4_ 

    from

        member member0_ 

    where

        member0_.name=?

위와 같은 select 쿼리가 날아가는 것 때문에 그렇습니다.

김영한님의 프로필 이미지
김영한
지식공유자

where 부분을 보시면 member0_.name=?

이름을 검색하는 것을 확인할 수 있습니다.

join() 로직 안에서 jpql이 사용되면서 호출되는 select 쿼리입니다.

참고로 JPQL은 항상 SQL로 번역되고 SQL이 실행됩니다.

감사합니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 지훈님

select 쿼리가 날아가지 않아서 정상입니다.

관련된 코드를 남겨서 설명해주시겠어요?

김지훈님의 프로필 이미지
김지훈

작성한 질문수

질문하기