일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Greedy
- AOP
- jpa
- 스프링
- Exception
- 스프링 핵심 기능
- JDBC
- 스프링 핵심 원리
- 백준
- 자바
- transaction
- java
- JPQL
- http
- 인프런
- QueryDSL
- Spring Boot
- springdatajpa
- 김영한
- db
- spring
- Thymeleaf
- 그리디
- Proxy
- Servlet
- 알고리즘
- kotlin
- Android
- pointcut
- SpringBoot
- Today
- Total
목록fetch join (7)
개발자되기 프로젝트
1. 기본 조인 조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고, 두 번째 파라미터에 별칭(alias)을 사용하여 Q타입을 지정.(QTeam.team) @Override public Q join(EntityPath target, Path alias) { return queryMixin.join(target, alias); } /** * 팀A에 소속된 모든 회원 조회 */ @Test public void join(){ List result = queryFactory .selectFrom(member) .join(member.team, QTeam.team) .where(team.name.eq("teamA")) .fetch(); assertThat(result) .extracting("userna..
1. @EntityGraph? 연관된 엔티티들을 SQL 한번에 조회하는방법 2. 사례 member -> team은 다대일 지연로딩 관계. 따라서 team에 대한 데이터 접근(team.get~) 시 쿼리가 날라감. 따라서 member에 대한 쿼리 외에 team의 데이터 조회하는 쿼리 나감. 즉 N+1 이슈 발생함. 3. member만 조회 @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); Member..
1. 엔티티 조회 엔티티를 조회해서 그대로 반환 엔티티 조회 후 DTO로 변환 fetch join으로 쿼리 수 최적화 컬레견 페이징과 한계 돌파 컬렉션은 페티 조인시 페이징이 불가능!!!! ToOne 관계는 페치 조인으로 쿼리 수 최적화하자 data row에 영향을 안줌 컬렉션은 페치 조인 대신에 지연로딩 유지하고, hibernate.default_batch_fetch_size, @BatchSize 2. DTO 직접 조회 JPA에서 DTO를 직접 조회 컬렉션 조회 최적화 - 일대다 관계인 컬렉션은 in절을 통해서 메모리에 미리 조회하여 최적화 플랫 테이터 최적화 - join 결과를 그대로 조회 후 애플리케이션에서 원하는 모양으로 직접 변환 3. 권장 순서 엔티티 조회 방식으로 우선 접근 페치 조인으로 쿼..
FETCH JOIN 실무에서 저어어어어어어어ㅓ엉어어어엉말 중요함. 1. fetch join SQL 조인의 종류가 아님 JPQL에서 성능 최적화를 위해 제공하는 기능 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능임. j bsh-developer.tistory.com Fetch Join2 1. 페치 조인의 특징과 한계 페시 조인 대상에는 별칭을 줄 수 없다. 하이버네이트는 가능, 하지만 가급적 사용하지 말자. fetch join은 나랑 연관된 엔티티를 전부 다 가져옴. 따라서 fetch join에 별 bsh-developer.tistory.com 1. Fetch Join을 활용 public List findAllWithMemberDelivery() { return em.createQuery("..
1. 페치 조인의 특징과 한계 페시 조인 대상에는 별칭을 줄 수 없다. 하이버네이트는 가능, 하지만 가급적 사용하지 말자. fetch join은 나랑 연관된 엔티티를 전부 다 가져옴. 따라서 fetch join에 별칭을 적용하여 탐색 시, 일부만 불러오게 됨. 예를들어 원래 t.members하면 5명이 나와야 하는데 fetch join에 별칭 적용하여 조건을 추가하여 3개가 나왔다고하자. 그러면 이 시점 이후에 t.members를 하면 5명이 아닌 3명만 조회된다. 하지만 JPA 기본 설계는 t.members하면 멤버 전체를 갈 수 있어야 한다. (객체 그래프는 기본적으로 전부 조회할 수 있어야 함) 둘 이상의 컬렉션은 페치 조인할 수 없다.(일 - 다 - 다) 일대다도 데이터 뻥튀기인데 일대다대다는? ..
실무에서 저어어어어어어어ㅓ엉어어어엉말 중요함. 1. fetch join SQL 조인의 종류가 아님 JPQL에서 성능 최적화를 위해 제공하는 기능 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능임. join fetch 명령어 사용 fetch join ::=[LEFT (OUTER) | INNTER] JOIN FETCH 조인경로 쿼리로 내가 원하는 객체 그래프를 어느 시점에 한 번에 조회할 것이라고 정할 수 있는 것. 지연로딩으로 설정해도 fetch join의 우선순위가 높음. 2. Entity fetch join 회원을 조회하면서 연관된 팀도 함께 조회(SQL 한 번에) SQL을 보면 회원 뿐 만 아니라 팀(T.*)도 함께 SELECT JPQL select m from Member m join ..
1. Fetch Type이란? Entity 를 조회할 경우 해당 Entity와 연관관계에 있는 Entity를 어떻게 가져올 것인지 설정하는 값이다. - 연관 관계에 있는 Entity 를 모두 가져온다 → Eager - 연관 관계에 있는 Entity 를 getter 로 접근할 때 가져온다 → Lazy 2. Lazy fetch Lazy Fetch는 연관관계에 있는 Entity를 바로 가져오는 것이 아니라 연관관계의 entity를 getter로 호출할 때만 가져온다. User class를 보자. user와 userHIstory는 1:N관계이다. User를 호출할 때 마다 UserHistory도 항상 불러와야 할까?? 항상 필요하지도 않은데..? UserHistory가 필요한 시점에만 쿼리를 실행하면 되지 않을..