JPA4 [Spring boot] JPA fetch join 2개 이상의 Collection Join 해결법 JPA fetch Join이전 포스트에서는 JPA의 N+1 문제 및 해결방안에 대해 정리하였다. [Spring boot] JPA N+1 발생 케이스 및 해결 방법JPA FetchType저번 포스트에서 Jpa의 FetchType인 지연 로딩과 즉시 로딩에 대해 정리하였다. [Spring boot] JPA FetchTypeFetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는kyu-nahc.tistory.com 지연로딩의 문제점을 해결하기 위해 fetch Join을 사용하였지만,fetch Join은 pagination이나 2개 이상의 Collection Join시 문제가 되었다.pagination은 fetch Join을 사용하지 않고 BatchSize를 사용.. 2024. 9. 23. [Spring boot] JPA N+1 발생 케이스 및 해결 방법 JPA FetchType저번 포스트에서 Jpa의 FetchType인 지연 로딩과 즉시 로딩에 대해 정리하였다. [Spring boot] JPA FetchTypeFetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는 전략’을 의미한다.javax.persistence.FetchType 패키지 내에 열거형(Eunm) 형태로 제공된다.// javax.persistence.FetchType.kyu-nahc.tistory.com 즉시 로딩은 예상 못하는 쿼리가 생기거나, JPQL에서 N+1 문제가 발생할 수 있다고 설명하였다.다시 한번 N+1문제를 정리하면 조회 시 1개의 쿼리를 생각하고 설계를 했으나나오지 않아도 되는 조회의 쿼리가 N개가 더 발생하는 문제이다.하.. 2024. 9. 22. [Spring boot] JPA FetchType FetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는 전략’을 의미한다.javax.persistence.FetchType 패키지 내에 열거형(Eunm) 형태로 제공된다.// javax.persistence.FetchType.classpublic enum FetchType { LAZY, EAGER; private FetchType() { }} FetchType에는 FetchType.EAGER 타입으로 ‘즉시 로딩(Eager Loading)’ 전략과FetchType.LAZY 타입으로 ‘지연 로딩(Lazy Loading)’ 전략이 존재한다.FetchType 타입은 언제 사용하는 것일까?A라는 엔티티와 B라는 엔티티가 존재한다는 가정 하였.. 2024. 9. 19. [Spring boot] Persistent Framework & JPA의 등장 데이터 영속성Persistence(영속성)은 데이터들이 프로그램이 종료되어도 사라지지 않고, 어떤 곳에 저장되는 개념을 뜻한다.물리적인 저장소를 이용해 프로그램의 상태와 상관없이 데이터를 저장하는 행위가 영속화이다.관계형 데이터베이스에 데이터를 저장하기 위해 SQL을 이용해 데이터를 영속화한다고 할 수 있다.자바에서는 데이터의 영속성을 위해 JDBC 인터페이스를 지원한다. 하지만 JDBC를 사용 시 개발자가 DB 연결, 예외 처리 등의 부가적인 요소를 모두 작성하고,Connection 같은 자원은 더 이상 사용하지 않는다면 반환해줘야 하는데, 이러한 부분 모두 개발자가 직접 처리해야 한다. 위와 같은 부분을 보완하고 독립적인 Query 생성 환경을 구축하기 위하여Persistent Framework가 .. 2024. 8. 11. 이전 1 다음