querydsl3 [Querydsl] @OneToMany에서 조건 절과 Fetch Join을 함께 사용할 때 서브쿼리 사용하기 배경프로젝트에서 동적 쿼리가 필요한 요구사항을 처리하기 위해 Querydsl를 사용하게 되었다. 쿼리 호출을 최소화하기 위해 1:N 연관관계로 되어있는 데이터를 페치 조인(fetchJoin)으로 가져오려고 했으나, 생각대로 되지 않았다. 필요한건 연관된 목록 전체의 정보인데, 조건에 맞는 데이터 한 건만 가지고 오게 되는 것이었다. 아래는 동일한 상황을 간단하게 재연한 것이다.Shiba@Entity@Table(name = "tb_shiba_holic")@Getterpublic final class Shiba { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seq") private Long seq; .. 2024. 5. 12. Querydsl Paging & Count Query 최적화 fetchResults() - Deprecated 기존에는 fetchResults()를 사용하여 페이징 처리할 때 개발자가 별도의 count 쿼리를 작성하지 않아도 돼서 편리했다. 하지만 Querydsl 5.0 버전부터 fetchResults는 Deprecated 되었다. fetchResults()는 개발자가 작성한 select 쿼리를 기반으로 count 용 쿼리를 내부에서 만들어서 실행한다. 단순 쿼리에서는 동작에 문제가 없었으나, 다중 그룹 쿼리(group By) 등 복잡한 쿼리에서는 잘 작동하지 않는다. 사용자들에게는 fetch() 후 결과를 count 하여 사용하라는 대안을 제시한다. Querydsl에서 페이징 처리를 할 때 다음과 같이 보통 Pageable를 파라미터로 받고 pageSize, o.. 2023. 11. 11. Spring Boot 3.0 QueryDsl Maven 설정하기 ✏️ 배경 토이 프로젝트에서는 최신 환경으로 해보고 싶어서 Spring Boot 3.0 버전과 Spring Framework 6을 사용해서 개발을 진행하고 있었는데, 복잡한 동적 쿼리를 해결하기 위해 Querydsl 도입하기 위해 적용하는 시점에 설정 후 컴파일에 계속해서 실패하는 상황이 발생했다. 스프링 부트 3.0 Maven 환경에서 Querydsl을 적용하는 방법에 대해서 간단히 공유하고자 한다. Gradle 환경이라면 다른 포스트를 찾아보는 걸 권장한다. 🔎 AS-IS 보통 Querydsl 설정을 검색해서 보면 아래와 같은 설정을 하라는 글을 많이 접하게 된다. com.querydsl querydsl-apt 5.0.0 provided com.querydsl querydsl-jpa 5.0.0 com.. 2023. 4. 9. 이전 1 다음