• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Querydsl과 jpql을 선택하는 차이가 궁금합니다.

20.06.18 23:24 작성 조회수 7.86k

14

드디어 querydsl을 배우고있네요!

제가 이해하고 있기로는, jpa에서 단순히 PK값으로 find()만 하는것이 아니기 때문에 여러가지 조건으로 검색하는 쿼리를 위해 jpql이 존재하는 것이고, jpql로 해결하기 어려운 동적쿼리나 더욱 복잡한 쿼리를 해결하기 위해 querydsl이 필요하다고 이해하고 있습니다.

그런데 실무에서 개발을 할 때 스프링 data jpa가 제공하는 기능이외에 필요한 내용들은 모두 querydsl로 작성하면 되지않나요??

querydsl 이외에 jpql을 작성해야하는 경우가 존재하는 것인지 아니면 querydsl과 jpql의 차이를 더욱 이해하기 쉽게하기위해 두가지 상황을 모두 보여주는 것인데 제가 착가하는 것인지 궁금합니다.

01. 실무에서 querydsl과 jpql을 같이 사용하나요??

02. jpql을 함께 사용 한다면, 같이 사용해야하는 이유는 무엇인가요?? (querydsl을 사용하면 jpql로 만들수 있는 모든 쿼리를 다 만들수 있지않나 생각됩니다.)

답변 1

답변을 작성해보세요.

43

안녕하세요. LUA님^^ 드디어! 막판까지 오셨군요 ㅎㅎ

사실 단순한 기능은 스프링 데이터 JPA로 정리하고, 좀 복잡한 쿼리가 있을 때 JPQL이나 Querydsl 둘중 하나를 고민하게 됩니다.

동적쿼리라면 사실 고민할게 없이 그냥 Querydsl을 사용하면 됩니다. 그런데 정말 단순한 쿼리 하나 둘 정도 JPQL로 작성해야 하는 상황이라면 고민이 조금 됩니다. 왜냐하면 스프링 데이터 JPA와 Querydsl을 함께 사용하려면 커스텀 리포지토리를 넣어주어야 하는데요. 이게 은근 귀찮습니다. ㅋㅋ

진짜 단순한거 하나 둘이라면 스프링 데이터 JPA가 제공하는

@Query 에노테이션을 사용하면 JPQL을 인터페이스에서 바로 작성하고 끝낼 수 있거든요^^

이런 점 때문에 단순한 JPQL 몇게 필요하면 그냥 @Query 쓰고, 조금 복잡해지면 바로 커스텀 리포지토리 만들어서 Querydsl 쓰고, 동적쿼리 필요하면 그냥 바로 커스텀 리포지토리 쓰고 ㅎㅎ 이런식으로 저는 사용합니다.

그런데 Querydsl 쓰다보면 중독되서 ㅋㅋㅋ 진짜 단순한거 아니면 죄다 Querydsl로 쓰게 되더라구요.

감사합니다.

김도현님의 프로필

김도현

2022.02.16

사랑해요 선생님...

ㅎㅎㅎ 감사합니다. 도현님

iloveoov님의 프로필

iloveoov

2022.02.27

와 좋은팁 감사합니다!

yun님의 프로필

yun

2022.03.03

갓영한!

큰 도움이 되었습니다

joongi님의 프로필

joongi

2022.11.24

강의듣다가 궁금해서 구글링했는데 다시 인프런으로 와서 댓글을 보네요 ㅋㅋ감사합니다.