SpringDataJPA

JPA Named Query(메소드 이름으로 JPA Named 쿼리 호출)

쿠카이든 2022. 6. 20. 17:11
728x90
  • 스프링 데이터 JPA는 메소드 이름으로 JPA Named 쿼리를 호출하는 기능을 제공한다.
  • JPA Named 쿼리의 이름 그대로 쿼리에 이름을 부여해서 사용하는 방법인데, 어노테이션이나 XML에 쿼리를 정의할 수 있다.
@Entity
@NamedQuery(
    name="Member.findByUsername",
    query="select m from Member m where m.username = :username")
public class Member  {
    ...
}
<named-query name="Member.findByUsername">
    <query><CDATA[
        select m
        from Member m
        where m.username = :username
    ]></query>
</named-query>

이렇게 정의한 Named 쿼리를 JPA에서 직접 호출하려면 아래처럼 코드를 작성해야 한다.

public class MemberRepository {
	public List<Member> findByUsername(String username){
        ...
        List<Member> resultList =
            em.createNamedQuery("Member.findByUsername", Member.class)
                .setParameter("username", "회원1")
                .getResultList();
    }
}

 스프링 데이터 JPA를 사용하면 아래와 같이 메소드 이름만으로 Named 쿼리를 호출할 수 있다.

public interface MemberRepository
    extends JpaRepository<Member, Long> {//여기 선언한 Member 도메인 클래스
    
    List<Member> findByUsername(@Param("username") String username);
}
  • 스프링 데이터 JPA는 선언한 "도메인 + .(점) + 메소드 이름" 으로 Named 쿼리를 찾아서 실행한다.
  • 따라서 예제는 Member.findByUsername이라는 Named 쿼리를 실행한다.

 

출처 : Java 표준 ORM JPA 프로그래밍 (저자 : 김영한)

728x90

'SpringDataJPA' 카테고리의 다른 글

페이징과 정렬  (0) 2022.06.21
@Query 와 파라미터 바인딩  (0) 2022.06.21
스프링 데이터 JPA 설정  (0) 2022.06.20
스프링 데이터 JPA 소개(부재 - 편리한 개발)  (0) 2022.06.19