[Spring Boot] N+1 문제
·
Back-End/Spring Boot
들어가기 전에 엔티티를 작성할 때 연관된 다른 테이블을 필드에 작성하는 경우가 있다. 한 테이블이 외래키를 갖는 경우 @ManyToOne을 통해 매핑하게 되는데, 여기서 우리는 FetchType을 설정하게 된다. 로딩 방식에는 Lazy Loading과 Eager Loading이 있다. 이 둘에 대해 알아보고 관련해서 나타나는 N+1 문제를 살펴보자.  Lazy Loading & Eager LoadingLazy Loading Lazy Loading은 지연 로딩이라고 하며, 연관된 엔티티를 실제로 접근할 때 불러오는 방식이다. 데이터베이스에서 엔티티를 가져올 때 로드하지 않고 해당 필드에 처음 접근할 때 쿼리가 발생한다. 초기 로드 시 필요한 데이터만 가져오므로 메모리 사용량이 줄어드는 이점이 있다. 하지만..
[Spring Boot] JPA 쿼리 최적화
·
Back-End/Spring Boot
들어가며 2024년 7월 말부터 10월 초까지 약 3개월 간 진행했던 프로젝트에 대해 정리할 만한 내용을 블로그에 기재하기로 했다. 프로젝트명은 InConcert로, 공연 소식을 확인하고 동행을 구하는 서비스이다. 크게 정리할 내용은 다음과 같다.쿼리 최적화 ➡️ 이번 게시글 주제!공연 정보 스크래핑 (비동기 처리)인기 공연 순위 알고리즘이 글에서는 쿼리 최적화 과정에 대해 설명하려고 한다. 페이지 구성우선 메인 페이지를 살펴보면 카테고리 별로 게시물을 출력하고, 상단에는 인기 공연을 보여주고 있다.  문제 상황메인 페이지를 조회했을 때 글을 불러오면서 화면상에 보이는 게시물뿐만 아니라 전체 게시물을 불러오는 문제가 있어 html의 코드를 수정하였다.공연 정보를 스크래핑하는 경우를 고려한다면 게시물이 ..