작성자: 고승원

이미지가 사용되는 모든 엔티티에서 Image 엔티티를 사용하기 때문에 라이프사이클이 모두 다르다는 판단하에 연관 관계를 끊었다.

Order 테이블과 조인을 통해 내 주문 목록을 보여줘야 한다.

조건

연관관계 없이 조인

세타조인 (from절에 조건 명시)

List<Order> orders = jpaQueryFactory
    .select(qOrder)
    .from(qOrder, qImage)
    .where(
    	qOrder.id.eq(qImage.referenceId),
        qImage.imageType.eq(ORDER)
    )
    .fetch();

세타조인은 카티션 프로덕트 + select 연산으로 이루어지기 때문에 효율이 좋지 않다. 그리고 left outer join같은 외부 조인이 불가능 하다.

on절에 조건 명시

예전 버전은 안되지만 이제 연관관계가 없더라도 조인이 가능하다.

List<Order> orders = jpaQueryFactory
	.select(qOrder, qImage)
    .from(qOrder)
    .leftJoin(qImage)
    .on(
	    qOrder.id.eq(qImage.referenceId),
        qImage.imageType.eq(ORDER)
    )
    .fetch();

DTO로 반환

setter

List<OrdersResponse> orders = jpaQueryFactory
	.select(Projections.bean(
    		OrderResponse.class,
            order.id,
            등등
    	)
    )
    .from(qOrder);

생성자