Spring Data JPA, Named Query
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이란?
Author And Source
이 문제에 관하여(Spring Data JPA, Named Query), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yebali/Spring-Data-JPA-Named-Query저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)