JPQL vs Querydsl

dongbin_Shin·2021년 10월 21일
0

QueryDsl

목록 보기
3/4
post-thumbnail

앞선 포스트에서 만든 엔티티를 이용해 JPQL과 Querydsl을 비교해보겠다.
memberteam세팅 같은 작업은 BasicTest라는 코드를 만들어 적어두고 실제 테스트 코드에서 BasicTest를 상속하는 형태로 작성했다.

JPQL

먼저 memberNamemember1과 같은 멤버를 찾는 코드를 JPQL로 작성해보았다.

setParameter로 파라미터 바인딩을 통해 해당하는 member를 찾는 형태이다.

Querydsl

위와 같은 내용을 querydsl로 작성해보았다.

selectwhere와 같은 쿼리가 코드로 되어 있어 이것을 사용해 쿼리를 작성하는 것을 볼 수 있다.

JPQL, Querydsl 비교

두 코드의 차이점은 다음과 같다.

  • Querydsl은 파라미터 바인딩을 하지 않더라도 자동으로 바인딩이 된다. SQL injection에서 장점을 가진다.
  • JPQL에서 쿼리를 잘못 입력하면 이 메서드를 호출했을 때에서야 쿼리가 잘못된 것을 알아차릴 수 있다. 반면 Querydsl은 컴파일 시점에 잘못된 쿼리를 알 수 있다.

JPAQueryFactory는 동시성 문제가 없기 때문에
필드로 빼서 사용해도 동시성 문제가 발생하지 않는다.

profile
멋있는 백엔드 개발자

0개의 댓글