• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

연관관계가 없는 도메인끼리 join 하는 쿼리가 필요한경우

20.01.14 10:01 작성 조회수 1.99k

0

안녕하세요. 질문이 있어서 글남깁니다..

JPA 는 객체간 연관관계 매핑으로 객체관점에서는 연관관계에 있는 데이터들을 쉽게 가져올 수 있잖아요..

근데 만약에 연관관계는 없는 도메인끼리 join을 해서 (연관관계가 없기 때문에 null 데이터가 포함될수있겠죠?) 가져오는 데이터가 필요하다면..

left outer join , inner join 등등..

그리고 쿼리 결과를 기존 도메인 객체가 아닌 새로운 DTO 객체로 리턴해야 하는경우...

(연관관계가 없기 때문에 새로운 DTO 로 결과 반환을 해야겠죠..)

실무에서 이런 경우가 있을 수 있거든요.. AS-IS 시스템을 JPA 로 변경하는 과정이라면..

이런경우에는 어떻게 처리를 하시나요?

QueryDSL 을 사용하시나요? JPQL 을 사용하시나요? 

실무에서의 경험이 없는 상태에서 적용하려니 어려운점이 많네요 ^^;;

답변 1

답변을 작성해보세요.

1

안녕하세요. 윤지상님^^

연관관계가 없어도 join이 가능합니다. left outer join, inner join 등등 일반적인 SQL에서 지원하는 모든 방식의 조인이 가능합니다. 이 부분에 대한 자세한 내용은 기본편 객체지향 쿼리 언어 부분을 보시면 도움이 되실꺼에요.

그리고 엔티티 대신에 DTO로 바로 조회하는 것도 당연히 가능합니다. 어떤 경우 엔티티로 조회하고 어떤 경우는 DTO로 바로 조회하는게 좋은지 성능까지 고려해서 설명드리는 내용이 바로 활용2편 입니다.

그리고 Querydsl은 JPQL 빌더 역할을 하는 것이기 때문에 결국 JPQL을 잘 알아야 Querydsl도 잘 사용할 수 있습니다^^

저는 실무에서 가급적 JPQL을 직접 사용하는 것 보다는 Querydsl을 사용하는 것을 더 권장합니다.

더 궁금한 내용은 언제든지 편하게 질문주세요^^