jpa 2

JPA의 N+1 문제, 왜 생기고 어떻게 해결할까?

오늘은 JPA를 사용한다면 반드시 알아야 하고, 자주 겪을 수 있는 N+1 문제에 대해 정리해보겠습니다. ▶️ N+1 문제란?쉽게 말하면, DB에서 1번만 가져오면 될 데이터를 여러 번에 걸쳐 조회하게 되는 현상입니다. 간단한 예를 들어 게시글 10개를 가져오면서, 각 게시글의 작성자 정보도 함께 조회한다고 해보겠습니다.- 게시글 1번 조회 → 작성자 1번 조회 (10개) → 총 11번 쿼리 실행. 이게 바로 N+1 문제입니다. (N+1은 "1개의 select + N개의 연관 select"의 의미입니다.) ▶️ 왜 발생할까?JPA는 객체지향스럽게 데이터를 가져오고자 지연 로딩(LAZY)을 기본으로 합니다.즉, 연관된 엔티티는 처음에 바로 가져오지 않고, 실제로 접근할 때 추가 쿼리를 날립니다. 게시글과 ..

Database 2025.06.13

QueryDSL StringTemplate 사용

* QueryDSL StringTemplate 사용 QueryDSL에서도 SQL Function 사용을 통해 쿼리를 간단하게 작성해야 할 경우가 있습니다. 이 경우 Expressions.stringTemplate() 혹은 Expressions.numberTemplate() 등을 통해 SQL Function을 사용할 수 있습니다. 이를 통해 Date cast, lower case 작성 등을 QueryDSL에서 쉽게 사용 가능합니다. Postgres에서 사용하는 간단한 예시 쿼리문을 몇개 살펴보겠습니다. 예시1) Date 추출 JPAQuery query = this.queryFactory.selectfrom(myTable) .groupby(Expressions.stringTemplate( "DATE_FORM..

Java 2022.02.23