JPA에 따라오는 꼬리표, N+1 최근들어 가장 많이 사용하는 API 중 하나인 JPA, 항상 JPA를 쓰면 따라오는 이야기가 있습니다. JPA를 쓰면 N+1 문제가 발생하는데 어떻게 해결해야하나요? JPA를 사용한다라고 하면 항상 나오는 질문입니다. 그때마다 머릿속에 정리가 잘 되지 않아 당황했던 기억이 있는데, 이 기회에 JPA에서 N+1이 발생하는 일반적인 케이스들을 모두 정리해보고자 글을 쓰게 되었어요 :) 흔히 알고있는 즉시로딩, 이 해결책으로 지연로딩 + fetch join을 해도 N+1이 생기는데요. 같이 모든 케이스를 확인해보면서 이야기를 이어나갈까 합니다 😀 모든 예제는 spring boot + spring data jpa환경으로 구성되어있습니다. 가장 많이 사용하는 조합이고, 많은 사람..
우리가 만드는 대부분의 어플리케이션은 객체 지향적인 언어를 사용한다. (Java, Scala ...) 하지만 데이터베이스에서는 아직은 RDB가 시장 대부분을 차지하고 있다. (Mysql, Oracle ...) 그래서 어떻게보면 객체를 RDB에 저장하여야하고 RDB에서 데이터를 꺼내서 객체에 매핑해서 사용해야한다. 즉, SQL 중심적인 개발을 진행해야한다. 누구나 한번쯤 느낄 수 있다. CRUD가 반복되는 무한반복 지루한 코딩 자바 객체를 SQL로, SQL를 자바객체로 변환하는 무수히 반복되는 코딩으로 인해서 SQL개발자인지 JAVA 개발자인지 분간이 되지 않는 상황이 오게 된다. 그 과정에서 겪을 수 있는 예를 보자. 객체 CRUD - 필드 추가 회원을 설계하고 회원을 저장하는 개발을 했다고 치자. pu..
- Total
- Today
- Yesterday