JPA Named Query
public interface MemberRepository extends JpaRepository<Member, Long> {
// @Query(name = "Member.findByUsername") 생략 가능
List<Member> findByUsername(@Param("username") String username);
}public class MemberRepository {
public List<Member> findByUsername(String username) {
...
List<Member> resultList =
em.createNamedQuery("Member.findByUsername", Member.class)
.setParameter("username", username)
.getResultList();
}
} @Entity
@NamedQuery(
name = "Member.findByUsername",
query = "select m from Member m where m.username = :username")
public class Member {
...
}쿼리의 이름을 정해놓고 불러올 수 있는 기능
@Query를 생략하고 메서드만으로도 호출할 수 있다.
엔티티 클래스.메서드 이름으로 NamedQuery가 선언된 게 있는지 찾아준다.ex. Member.findByUsername
없다면 메서드 이름으로 쿼리를 자동 생성한다.
애플리케이션 로딩 시점에 미리 SQL를 만들어보고 문법 오류를 체크해준다.
NamedQuery 기능은 실무에서 잘 사용하지 않는다.
대신 @Query를 사용해 직접 정의한다.
Last updated
Was this helpful?