2020. 9. 22. 22:40, Developer
연관된 엔티티들을 SQL 한번으로 조회 - 성능 최적화
LAZY 전략보다 우선시 되어 한방에 DB에서 뽑아온다.
실무에서는 글로벌 로딩 전략은 모두 지연로딩(LAZY 로딩) 으로 잡고,
최적화가 필요한 곳에 이 fetch 조인은 적용한다. (성능 문제 대부분 해결)
fetch 조인 대상에게는 별명을 줄수 없다.
근데 하이버네이트는 가능하긴 한데 사용하지 말자.
어차피 다 조회하는 한방쿼리인데 그 대상의 속성들에게 별명을 줄 필요도 없고 준다해도 위험함.
그리고 둘 이상의 컨렉션은 fetch 조인을 할수 없다.
컬렉션을 fetch 조인 하면 페이징을 사용할수가 없다.
일대일, 다대일 같은 단일 값 연관 필드들은 fetch 써도 페이징 가능.
데이타가 뻥튀기 되기 때문에 컬렉션을 fetch 조인하면 페이징을 절대 못함.
일대다 를 뒤집어서 다대일로 바꿔서 페이징 구현할 수도 있음.
작동은 해도 개판되는거임. 망함. (하이버네이트는 경고로그를 남기고 메모리에서 페이징함,겁나위험함)
'Developer' 카테고리의 다른 글
[JPA]BatchSize - 전역선언해서 사용하기 (0) | 2020.09.22 |
---|---|
[JPA]BatchSize - LAZY로딩 시 몇개를 가져올거냐? (0) | 2020.09.22 |
[JPA]JPQL - distinct 중복제거 (0) | 2020.09.22 |
[JAP]fetch 조인 - 한방쿼리 (0) | 2020.09.22 |
[JPA]JPQL 기본 함수 (0) | 2020.09.21 |
Comments, Trackbacks