728x90
- 리포지토리 메소드에 직접 쿼리를 정의하려면 @org.springframework.data.jpa.repository.Query 어노테이션을 사용한다.
- 이 방법은 실행할 메소드에 정적 쿼리를 직접 작성하므로 이름 없는 Named 쿼리라 할 수 있다.
- 또한 JPA Named 쿼리처럼 애플리케이션 실행 시점에 문법 오류를 발견할 수 있는 장점이 있다.
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query("select m from Member m where m.username = ?1")
Member findByUsername(String username);
}
파라미터 바인딩
- 스프링 데이터 JPA는 위치 기반 파라미터 바인딩과 이름 기반 파라미터 바인딩을 모두 지원한다.
select m from Member m where m.username = ?1 //위치 기반
select m from Member m where m.username = :name //이름 기반
- 이름 기반 파라미터 바인딩을 사용하려면 아래 예제와 같이 org.springframework.data.repository.query.Param(파라미터 이름) 어노테이션을 사용하면 된다.
- 코드 가독성과 유지보수를 위해 이름 기반 파라미터 바인딩을 사용하자.
import org.springframework.data.repository.query.Param
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query("select m from Member m where m.username = :name")
Member findByUsername(@Param("name") String username);
}
출처 : JAVA 표준 ORM JPA 프로그래밍 (저자 : 김영한)
728x90
'SpringDataJPA' 카테고리의 다른 글
페이징과 정렬 (0) | 2022.06.21 |
---|---|
JPA Named Query(메소드 이름으로 JPA Named 쿼리 호출) (0) | 2022.06.20 |
스프링 데이터 JPA 설정 (0) | 2022.06.20 |
스프링 데이터 JPA 소개(부재 - 편리한 개발) (0) | 2022.06.19 |