본문 바로가기

QueryDSL2

QueryDsl 사용 시 CrossJoin 발생하는 경우와 해결 방법 들어가며 QueryDsl을 사용하던 도중 원치않게 CrossJoin이 발생하는 경우를 발견하여 해당 사항을 정리한다. Cross Join 먼저 CrossJoin이 무엇인지에 대해서 알아본다. CrossJoin은 교차조인이라고 말하여 두 테이블이 있을때 교차조인을 하게 되면 두 테이블의 데이터의 모든 조합을 나타내게 된다. 한쪽에 데이터가 n개이고 다른 한쪽에 데이터가 m개라고 한다면 총 n x m개의 경우의 수가 나타나게 되어 데이터가 많은 테이블이라면 사용할때 주의하지 않으면 성능상 큰 문제를 가져올 수 있다. Cross Join 발생하는 경우 위에서도 설명을 했듯이 교차 조인이 필요하여 사용하는 경우는 상관없지만 원치않는 상황에서 교차조인이 발생하게 되면 성능상 문제가 될 수 있기에 원치 않는 교차 .. 2022. 7. 29.
Querydsl - CaseBuilder를 통한 Case When 사용 방법 들어가며 Querydsl을 사용할때 조건절이 필요한 경우 CaseBuilder를 사용하여 Case When을 사용할 수 있다. 사용 방법은 아래와 같다. 코드 - 자바 & 코틀린 아래의 코드는 자바와 코틀린에서의 코드를 정리한다. 사용방법은 크게 다르지 않다. 미세한 차이가 있으니 아래를 참고해서 사용하자. 자바 @RequiredArgsConstructor public class PointEventRepositoryImpl implements PointEventRepositoryCustom { private final JPAQueryFactory queryFactory; @Override public List calculateAmounts() { return queryFactory .select(Proj.. 2022. 2. 16.