스프링데이터 JPA[쿼리 메서드] - @Query 어노테이션 사용법
2021. 2. 6. 21:28ㆍJPA/SPRING DATA JPA
@Query
- JPQL을 정의할 수 있는 어노테이션
1. JPA의 @NamedQuery에 정의된 쿼리를 정의하여 사용할 수 있다.
@Entity
@NamedQuery(name="Member.findAll", query="select m from Member m")
public class Member {
...
}
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query(name = "Member.findAll")
List<Member> findAll();
}
위 예제와 같이 NamedQuery의 이름과 레퍼지포리의 메서드 이름이 같은 경우 @Query 어노테이션 생략 가능.
2. 컬럼 리스트 조회하기
@Query("select m.username from Member m")
List<String> findUsernameList();
3. DTO로 조회하기
@Query("select new study.datajpa.repository.MemberDto(m.id, m.username, t.name) from Member m join m.team t")
List<MemberDto> findMemberDto();
주의! DTO로 직접 조회 하려면 JPA의 new 명령어를 사용해야 한다. 그리고 다음과 같이 생성자가 맞는 DTO가 필요하다. (JPA와 사용방식이 동일하다.)
4. 파라미터 바인딩 - @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 findMembers(@Param("name") String username);
}
'JPA > SPRING DATA JPA' 카테고리의 다른 글
스프링 데이터 JPA - Auditing, 엔티티에 등록일, 수정일, 등록자, 수정자 자동으로 적용하기! (0) | 2021.02.08 |
---|---|
스프링데이터 JPA - 사용자 정의 레퍼지토리 구현 (0) | 2021.02.07 |
스프링 데이터 JPA[쿼리 메서드] - 벌크 연산 (0) | 2021.02.06 |
스프링데이터 JPA[쿼리 메서드] - 페이징 (0) | 2021.02.06 |
스프링데이터 JPA[쿼리 메서드] - 메서드 이름으로 쿼리 생성 규칙, 반환타입 (0) | 2021.02.06 |