실전! 스프링 데이터 JPA

Ch03. 쿼리 메소드 기능 - JPA NamedQuery

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

JPA

NamedQuery 작성
JPA에서의 NamedQuery 불러오기

  • Entity에 NamedQuery를 작성한 뒤, JPQL에서 namedQuery를 호출할 수 있다.
  • 네임드 쿼리는 실무에서 잘 사용하지는 않지만 막강한 기능 중 하나인 애플리케이션 로딩 시점에 쿼리를 파싱 하여 오류를 잡아줄 수 있는 기능이 있다.

SpringDataJpa

SpringDataJPA에서의 NamedQuery
NamedQuery 테스트

  • @Query 를 생략하고 메서드 이름만으로 Named 쿼리를 호출할 수 있다.
  • 스프링 데이터 JPA는 선언한 "도메인 클래스 + .(점) + 메서드 이름"으로 Named 쿼리를 찾아서 실행
  • 만약 실행할 Named 쿼리가 없으면 메서드 이름으로 쿼리 생성 전략을 사용한다.
  • 필요하면 전략을 변경할 수 있지만 권장하지 않는다.

참고

: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-lookup-strategies

 

Spring Data JPA - Reference Documentation

Example 109. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del

docs.spring.io

스프링 데이터 JPA를 사용하면 실무에서 Named Query를 직접 등록해서 사용하는 일은 드물다. 대신 @Query를 사용해서 리파지토리 메소드에 쿼리를 직접 정의한다

728x90