스프링데이터 JPA[쿼리 메서드] - 메서드 이름으로 쿼리 생성 규칙, 반환타입

2021. 2. 6. 21:09JPA/SPRING DATA JPA

쿼리 메서드의 메서드명으로 쿼리 생성시 명명 규칙에 대해 알아보자.

메서드 명명 규칙

  • 조회: find…By ,read…By ,query…By get…By 예:) findHelloBy 처럼 ...에 식별하기 위한 내용(설명)이 들어가도 된다.
  • COUNT: count…By 반환타입 long
  • EXISTS: exists…By 반환타입 boolean
  • 삭제: delete…By, remove…By 반환타입 long
  • DISTINCT: findDistinct, findMemberDistinctBy
  • LIMIT: findFirst3, findFirst, findTop, findTop3

자세한 규칙은 레퍼런스를 참고하자.

메서드 명명 규칙 스프링 공식 레퍼런스: docs.spring.io/spring-data/jpa/docs/2.4.3/reference/html/#jpa.query-methods.query-creation

 

Spring Data JPA - Reference Documentation

Example 109. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v

docs.spring.io

  • 간단한 조건 두 개정도면 위 메서드 명명 규칙을 사용해 직접 쿼리를 작성하지 않고 사용하는 것을 추천한다.
  • 하지만 조건이 복잡해지고 많아질수록 메서드명이 엄청 길어지는 단점이 있기 때문에 조건이 3개 이상인 경우 @Query 어노테이션을 사용하여 직접 쿼리를 작성하는 것을 추천한다.

메서드 반환 타입

  • 컬렉션, Optional, 엔티티 타입, 페이지 등 다양한 반환타입을 지원한다.

자세한 규칙은 레퍼런스를 참고하자

메서드 반환 타입 스프링 공식 레퍼런스: docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types

 

Spring Data JPA - Reference Documentation

Example 109. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v

docs.spring.io