Yebali

Spring Data JPA의 Named Query 본문

Spring

Spring Data JPA의 Named Query

예발이 2021. 10. 11. 21:08

Named Query란?

네임드 쿼리란 말 그대로 이름을 붙여놓은 쿼리를 말한다.
사전에 쿼리에 이름을 붙여놓고 사용할 때, 쿼리의 이름을 사용하여 메서드를 구현하는 기능이다.

예시 Entity

Named Query를 사용하기 위해서는 @NamedQuery 애너테이션을 사용하여 Entity에 query를 선언해주어야 한다.

@Entity
@NamedQuery(
        name="Member.findByUsername",
        query="select m from Member m where m.username = :username"
)
public class Member {

    @Id @GeneratedValue
    @Column(name = "member_id")
    private Long id;
    
    private String username;
    
    private int age;

Repository

Entity에 선언한 Named Query를 Repository에서 아래와 같이 사용하면 된다.

@Query(name = "Member.findByUsername")
List<Member> findByUsername(@Param("username") String username);

참고로 "@Query(name = "Member.findByUsername")"부분을 주석 처리해도 동작한다.
Spring Data JPA는 "Query Creation" 기능을 사용하기 전에 "Named Query"를 먼저 찾기 때문이다.

"Query Creation"기능에 대해 알고 싶다면 아래 링크를 참고하자.
Query Creation이란?

 

Named Query는 실무에서는 잘 사용하지 않는다고 한다.
쿼리를 직접 정의할 일이 있다면 @Query 기능을 사용하도록 하자.

'Spring' 카테고리의 다른 글

Spring Data JPA의 반환 타입  (0) 2021.10.11
Spring Data JPA의 @Query 애너에티션  (0) 2021.10.11
Spring Data JPA의 Query Creation  (0) 2021.10.11
Spring Data JPA를 이용한 CRUD  (0) 2021.10.11
Spring Data JPA란?  (0) 2021.10.11