inflearn logo
강의

Course

Instructor

Real-world! Spring Boot and JPA Utilization 2 - API Development and Performance Optimization

Simple Order Lookup V3: Converting Entities to DTOs - Fetch Join Optimization

Jpa query 질문이 있어서 올립니다.

255

ecomin

18 asked

1

다름이 아니라 제가 실행하고 돌린 것은 fetch 조인을 해도 쿼리가 하나가 나가는게 아니라 2개가 나갑니다.

select

        order0_.order_id as order_id1_6_0_,

        member1_.member_id as member_i1_4_1_,

        delivery2_.delivery_id as delivery1_2_2_,

        order0_.delivery_id as delivery4_6_0_,

        order0_.member_id as member_i5_6_0_,

        order0_.order_date as order_da2_6_0_,

        order0_.status as status3_6_0_,

        member1_.city as city2_4_1_,

        member1_.street as street3_4_1_,

        member1_.zipcode as zipcode4_4_1_,

        member1_.name as name5_4_1_,

        delivery2_.city as city2_2_2_,

        delivery2_.street as street3_2_2_,

        delivery2_.zipcode as zipcode4_2_2_,

        delivery2_.status as status5_2_2_ 

    from

        orders order0_ 

    inner join

        member member1_ 

            on order0_.member_id=member1_.member_id 

    inner join

        delivery delivery2_ 

            on order0_.delivery_id=delivery2_.delivery_id

Hibernate: 

    select

        order0_.order_id as order_id1_6_0_,

        member1_.member_id as member_i1_4_1_,

        delivery2_.delivery_id as delivery1_2_2_,

        order0_.delivery_id as delivery4_6_0_,

        order0_.member_id as member_i5_6_0_,

        order0_.order_date as order_da2_6_0_,

        order0_.status as status3_6_0_,

        member1_.city as city2_4_1_,

        member1_.street as street3_4_1_,

        member1_.zipcode as zipcode4_4_1_,

        member1_.name as name5_4_1_,

        delivery2_.city as city2_2_2_,

        delivery2_.street as street3_2_2_,

        delivery2_.zipcode as zipcode4_2_2_,

        delivery2_.status as status5_2_2_ 

    from

        orders order0_ 

    inner join

        member member1_ 

            on order0_.member_id=member1_.member_id 

    inner join

        delivery delivery2_ 

            on order0_.delivery_id=delivery2_.delivery_id

이런식으로 두개가 나가는데 이렇게 나가는 이유가 조회한 orderId 값이 달라서 이런건가요?? 그러기엔 영속성 안에 있는 값을 사용하면되는데 왜 다시 한번 호출이 되는지 궁금합니다.

spring JPA java spring-boot

Answer 1

1

yh

안녕하세요. 경재님^^

아마도 show_sql 옵션을 켜주시고 또

logging.level.org.hibernate.SQL: debug 이렇게 둘다 켜져 있어서 그렇게 보인 것 같아요.

show_sql은 콘솔에 출력하고

logging.level.org.hibernate.SQL: debug는 로거를 통해서 출력하거든요.

다른 JPQL들도 실행해보시면 이해하실 수 있을거에요.

감사합니다.

@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.

0

28

2

강의 관련 외 질문입니다.

0

90

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

1

110

1

BeanCreationException

0

103

3

Update 후 UpdateMemberResponse 매핑할 때

0

64

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

109

2

페이징 + 검색조건 관련해서 질문드립니다.

0

76

1

Query Dsl Q파일 질문입니다.

0

92

1

루트 쿼리라는것은

0

67

1

메서드를 분리하는 기준

0

76

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

121

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

97

2

fetch join과 영속화와 OSIV의 관계

0

100

2

Distinct 사용 전 결과에 대한 의문

0

124

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

65

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

82

2

dto 필드 속 엔티티 여부

0

67

1

뷰템플릿 사용 시

0

85

2

Result 클래스 관련 질문

0

59

1

@PostConstruct 프록시 관련 질문드립니다

0

91

1

DTO 대신 Form 사용은 안되나요?

0

142

1

OSIV ON 상태일 때

0

102

1

fetch join VS fetch join 페이징 궁금증

0

192

2

양방향 연관관계 알아보는 법?

0

112

1