실전! 스프링 데이터 JPA

Ch03. 쿼리 메소드 기능 - @Query, 리포지토리 메소드에 쿼리 정의하기

webmaster 2021. 12. 26. 10:23
728x90

@Query

  • 메서드에서 해당 쿼리를 바로 동작시킬 수 있다.
  • 이름이 없는 네임드 쿼리와 동일한 방식으로 동작하기 때문에 애플리케이션 로딩 시점에 오류를 잡을 수 있는 장점이 있다.

참고

실무에서는 메소드 이름으로 쿼리 생성 기능은 파라미터가 증가하면 메서드 이름이 매우 지저분해진다. 따라서 @Query 기능을 자주 사용하게 된다.

@Query, 값, DTO 조회하기

하나의 값만 조회할 때

하나의 값만 조회
Test

  • JPA 값 타입( @Embedded )도 이 방식으로 조회할 수 있다.

DTO 직접 조회

DTO 생성
DTO로 쿼리 반환(NamedQuery의 new 생성자로 직접 받는다)
Test

  • DTO로 직접 조회를 하므로 JPA의 new 명령어를 사용해야 한다.
  • 생성자가 맞는 DTO가 필요하다(JPA와 동일)
 
728x90