목록2026/03/09 (2)
공부일기
이번 프로젝트를 진행하면서 진짜 제일제일제일루다가 신기했던 부분은 Repository 계층에서 직접 쿼리를 작성하지 않아도 쿼리가 동작한다는 점이었다. 예를 들어 이런 코드가 있었다.public interface CommentRepository extends JpaRepository { Page findByPostId(Long postId, Pageable pageable);} 처음에는 이런 의문이 들었다.구현 코드가 없는데 왜 동작하지?findByPostId는 왜 post.id로 해석되지?Pageable은 누가 만들어서 넣어주지?@Query와 findBy...는 언제 다르게 써야 하지?이번 글에서는 Spring Data JPA의 쿼리 방식을 MiniSNS 프로젝트에서 실제로 사용한 코드 기준으로..
MiniSNS 프로젝트를 진행하면서 게시글 목록 조회 API를 구현하다가 예상하지 못한 성능 문제를 발견했다.바로 JPA에서 매우 유명한 N+1 문제였다.이번 글에서는 MiniSNS 프로젝트에서 실제로 발생했던 사례를 기반으로 다음 내용을 정리하려 한다.페이지네이션 구현과 PageResponseJava 제네릭(Generic)의 기본 개념N+1 문제란 무엇인가Lazy Loading과 N+1의 관계EntityGraph와 DTO ProjectionMiniSNS 프로젝트에서 선택한 해결 전략1. 게시글 조회 API와 PageResponse게시글 목록 API는 다음과 같이 구현했다.@GetMapping("/posts")public PageResponse getPosts(Pageable pageable) {retu..