JPA - @Query 어노테이션 , Querydsl

mangez_js·2024년 6월 4일

Study

목록 보기
3/47

Query 어노테이션

Spring Data JPA @Query 어노테이션

SQL과 유사한 JPQL (Java PErsistence Query Language) 라는 객체지향 쿼리 언어를 통해 복잡한 쿼리 처리를 지원

  • JPQL : 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리, SQL 추상화로 인해 특정 db sql에 의존하지 않음

@Query nativeQuery

기존의 SQL문을 사용할 수 있도록 지원하는 @Query 어노테이션의 속성

Querydsl

Querydsl

SQL 쿼리문을 문자열이 아닌 소스코드로 작성하도록 지원하는 빌더 API(프레임워크)

  • Querydsl의 장점
  1. 고정된 SQL문이 아닌 조건에 맞게 동적으로 쿼리 생성 가능
  2. 제약 조건 조립 및 가독성 향상
  3. 컴파일 시점에 오류를 발견할 수 있음
  4. 자동 완성 기능으로 인한 생산성 향상
  • JPAQuery 데이터 반환 메소드
메소드기능
List fetch()조회 결과 리스트 반환
T fetchOne()조회 결과 대상이 1건인 경우
T fetchFirst()조회 대상 중 1건만 반환
Long fetchCount()조회 대상 개수 반환
QueryResult fetchResults()조회한 리스트와 전체 개수 반환

QuerydslPredicateExecutor

  • Predicate

    쿼리문의 where 조건문을 메소드로 정의해놓은 것

  • QuerydslPreicateExecutor 상속
    Repository에 Predicate를 매개변수로 전달하기 위해 QuerydslPredicateExecutor 상속
public interface Repository extends JpaRepository<Item, Long>,
  QuerydslPredicateExecutor{
  • QuerydslPredicateExecutor 인터페이스 정의 메소드
메소드기능
long count(Predicate)데이터의 총 개수 반환
boolean exists(Predicate)데이터 존재 여부 반환
Iterable findAll(Predicate)모든 데이터 반환
Page findAll(Predicate, Pageable)조건에 맞는 페이지 데이터 반환
Iterable findAll(Predicate, Sort)정렬된 데이터 반환
T findOne(Predicate)조건에 맞는 데이터 1개 반환

0개의 댓글