
Named 쿼리
- 메소드 이름으로 JPA NamedQuery 호출
- 스프링 데이터 JPA는 선언한 "도메인 클래스 + .(점) + 메서드 이름"으로 Named 쿼리를 찾아서 실행
- 만약 실행할 Named 쿼리가 없으면 메서드 이름으로 쿼리 생성 전략을 사용한다.
- 필요하면 전략을 변경할 수 있지만 권장하지 않는다.
@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;
public List<Member> findByUsername(String username) {
return em.createNamedQuery("Member.findByUsername")
.setParameter("username", username)
.getResultList();
}
@Query(name = "Member.findByUsername")
List<Member> findByUsername(@Param("username") String username);