티스토리 뷰

인프런 - 김영한 JPA 강의 중

as m 부분 같은 별칭은 fetch join에서는 원칙적으로 사용할 수 없다.

 

인프런 - 김영한 JPA 강의 중

 

페치 조인에서 페이징을 쓸 수 없는 이유는 일대 다이기 때문에 데이터가 늘어나게 되는데. 이 경우 만약

팀A|멤버1

팀A|멤버2

팀B|멤버3

인 경우 2개만 가져오게끔 페이징을 한다면 팀A만 2개 가져오니 우리가 원래 원하는

팀에 대한 페이징이 불가하다.

만약 다대일로 만들어 페이징을 사용한다면 문제가 없다.

 

혹은 과감하게 join 없이 team만 불러서 페이징을 넣은 후에

member를 불러 사용한다.

 

그럼 member를 찾을 때마다 쿼리를 날려야 할텐데 트래픽이 또 발생해 버린다.

이런 때에

@BatchSize를 사용한다.

 

    @BatchSize(size = 100)
    @OneToMany(mappedBy = "team")
    private List<Member> members = new ArrayList<>();

 

인프런 - 김영한 JPA 강의 중

 

그럼 이렇게 in문법으로 sql을 보내게 된다.

 

혹은 persistence.yml에

            <property name="hibernate.default_batch_fetch_size" value="100" />

를 추가하여 글로벌하게 묶을 수도 있다.

 

인프런 - 김영한 JPA 강의 중

 

인프런 - 김영한 JPA 강의 중

 

 

'dev_공부일지 > JPA 기본' 카테고리의 다른 글

JPQL에서 엔티티 직접사용  (0) 2024.02.22
다형성 쿼리  (0) 2024.02.22
패치 조인  (0) 2024.02.22
JPQL 기본 함수 , @OrderColumn  (0) 2024.02.20
JPQL case식  (0) 2024.02.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함