[TIL] 스프링 입문 - Query Methods
Spring Data JPA의 Query Methods와 메서드 이름 기반 쿼리 생성 방식을 정리한 TIL입니다.
For the English version of this post, see here.
[TIL] 스프링 입문 - Query Methods
오늘 할 일
공부한 내용
Query Methods
- Query Methods
- Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공함
- JpaRepository 인터페이스에서 해당 인터페이스와 매핑되어있는 테이블에 요청하고자하는 SQL 메서드 이름을 사용하여 선언할 수 있음
- SimpleJpaRepository 클래스가 생성될 때 위처럼 직접 선언한 JpaRepository 인터페이스의 모든 메서드를 자동으로 구현해줌
- JpaRepository 인터페이스의 메서드 즉, Query Methods는 개발자가 이미 정의되어있는 규칙에 맞게 메서드를 선언하면 해당 메서드 이름을 분석하여 SimpleJpaRepository에서 구현됨 ex)
findAllByOrderByModifiedAtDesc: 해당 메서드 이름은 Memo 테이블에서 ModifiedAt 즉, 수정 시간을 기준으로 전체 테이터를 내림차순으로 가져오는 SQL을 실행하는 메서드를 생성할 수 있음 ex)List<Memo> findAllByUsername(String username);: 이렇게 Query Method를 선언했을 경우ByUsername에 값을 전달해줘야하기 때문에 파라미터에 해당 값의 타입과 변수명을 선언해줌
- 즉 Query Methods는 메서드의 파라미터를 통해 SQL에 필요한 값을 동적으로 받아 처리할 수 있음
- Query Methods의 적용
- 최신 메모가 가장 상단에 나올 수 있도록 수정
1 2 3 4 5
// MemoService public List<MemoResponseDto> getMemos() { // DB 조회 return memoRepository.findAllByOrderByModifiedAtDesc().stream().map(MemoResponseDto::new).toList(); }
- 최신 메모가 가장 상단에 나올 수 있도록 수정