2024. 8. 21. 09:54ㆍ스프링
2024/08/21
※ Query Methods란 무엇일까?
▶ Query Methods란?
● Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공한다.
🔎 스프링 Document에 JPA Query Methods에 대해 상세하게 나와 있다.
https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html
● JpaRepository 인터페이스에서 해당 인터페이스와 매핑되어있는 테이블에 요청하고자하는 SQL을
메서드 이름을 사용하여 선언할 수 있다.
👉 예시)
package com.sparta.memo.repository;
import com.sparta.memo.entity.Memo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface MemoRepository extends JpaRepository<Memo, Long> {
List<Memo> findAllByOrderByModifiedAtDesc();
}
● SimpleJpaRepository 클래스가 생성될 때 위처럼 직접 선언한 JpaRepository 인터페이스의
모든 메서드를 자동으로 구현해준다.
○ paRepository 인터페이스의 메서드 즉, Query Methods는 개발자가 이미 정의 되어있는 규칙에
맞게 메서드를 선언하면 해당 메서드 이름을 분석하여 SimpleJpaRepository에서 구현이 된다.
○ 따라서 우리는 인터페이스에 필요한 SQL에 해당하는 메서드 이름 패턴으로 메서드를 선언 하기만
하면 따로 구현하지 않아도 사용할 수 있다.
● findAllByOrderByModifiedAtDesc 해당 메서드 이름은 Memo 테이블에서 ModifiedAt 즉, 수정 시간을
기준으로 전체 데이터를 내림차순으로 가져오는 SQL을 실행하는 메서드를 생성할 수 있다.
● List<Memo> findAllByUsername(String username);
○ 이렇게 Query Method를 선언했을 경우 ByUsername 에 값을 전달해줘야하기 때문에 파라미터에
해당 값의 타입과 변수명을 선언해준다.
○ 즉, Query Methods 는 메서드의 파라미터를 통해 SQL에 필요한 값을 동적으로 받아 처리할 수 있다.
▶ Query Methods 적용해보기
👉 예시)
● 최신 메모가 가장 상단에 나올 수 있도록 수정
public List<MemoResponseDto> getMemos() {
// DB 조회
return memoRepository.findAllByOrderByModifiedAtDesc().stream().map(MemoResponseDto::new).toList();
}
'스프링' 카테고리의 다른 글
스프링 - Mockito란? (0) | 2024.08.23 |
---|---|
스프링 - 테스트 사용 방법 (0) | 2024.08.22 |
스프링 - JPA Auditing 적용하기 (0) | 2024.08.20 |
스프링 - RestTemplate & Open API (0) | 2024.08.19 |
스프링 - RESTful API이란 무엇일까? (0) | 2024.08.16 |