Spring Data JPA, Named Query

yebali·2021년 7월 26일
0

약간의_Spring

목록 보기
20/30

Named Query란?

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

예를 들어 아래와 같은 'Member' 엔티티가 있을 때 'username'으로 Member를 찾는 쿼리를 만든다고 해보자.

Entity

아래와 같은 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 기능을 사용하도록 하자.
@Query이란?

profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글