728x90

JpaRepository 상속 시 메서드 이름 구성

  • 메서드 이름은 findBy, findAllBy, existsBy, deleteBy 등의 접두사로 시작한다.
  • 이 접두사는 메서드가 어떤 기능을 수행하는지를 나타낸다.
    • findBy는 조회를, existsBy는 존재 여부 확인을, deleteBy는 삭제를 의미한다.

속성 이름 사용

  • 메서드 이름에서 사용하는 속성 이름은 엔티티 클래스의 필드 이름과 일치해야 한다. 대소문자를 구분하지 않고 CamelCase로 작성한다. 
  • findByUserName(String userName)에서 userName은 User 엔티티의 userName 필드와 일치해야 한다.

조건 연산자

  • Containing, Is, Equals, Between, LessThan, GreaterThan, In, Before, After, StartingWith, EndingWith, Not, True, False, OrderBy
  • findByUserNameAndEmail(String userName, String email)은 사용자 이름과 이메일이 모두 일치하는 엔티티를 조회한다.

정렬 및 페이징

  • 메서드 이름에 OrderBy 또는 Top, First, Last 등을 사용하여 정렬 순서 또는 결과의 최대 개수를 지정할 수 있다.
  • findTop3ByOrderByCreatedAtDesc()은 생성일자를 기준으로 내림차순으로 최대 3개의 결과를 조회한다.

기타 주의 사항

  • 메서드 이름에서 예약된 키워드( And, Or, Between, LessThan, GreaterThan )를 올바르게 사용해야 한다.
  • 메서드 이름은 가능한 한 명확하고 직관적으로 작성해야 한다.

 

주요 키워드

  • Containing: SQL의 LIKE '%keyword%'와 유사. 부분 일치를 의미
    • List<Post> findByTitleContaining(String title);
  • Is, Equals: 필드 값이 정확히 일치하는 경우
    • List<User> findByUsernameIs(String username); List<User> findByUsernameEquals(String username);
  • Between: 두 값 사이에 있는 경우
    • List<Order> findByOrderDateBetween(LocalDate startDate, LocalDate endDate);
  • LessThan, LessThanEqual: 값이 특정 값보다 작거나 작은 경우
    • List<Product> findByPriceLessThan(Double price); List<Product> findByPriceLessThanEqual(Double price);
  • GreaterThan, GreaterThanEqual: 값이 특정 값보다 크거나 큰 경우
    • List<Product> findByPriceGreaterThan(Double price); List<Product> findByPriceGreaterThanEqual(Double price);
  • In: 여러 값 중 하나와 일치하는 경우
    • List<User> findByUsernameIn(List<String> usernames);
  • Before, After: 날짜가 특정 날짜 이전이거나 이후인 경우
    • List<Event> findByEventDateBefore(LocalDate date); List<Event> findByEventDateAfter(LocalDate date);
  • StartingWith, EndingWith: 문자열이 특정 접두사 또는 접미사로 시작하거나 끝나는 경우
    • List<User> findByUsernameStartingWith(String prefix); List<User> findByUsernameEndingWith(String suffix);
  • Not: 특정 조건과 일치하지 않는 경우
    • List<User> findByUsernameNot(String username);
  • True, False: Boolean 필드가 true 또는 false인 경우
    • List<User> findByActiveTrue(); List<User> findByActiveFalse();
  • OrderBy: 결과 정렬. Asc 또는 Desc를 사용하여 오름차순 또는 내림차순 지정
    • List<Post> findByUserOrderByCreatedAtDesc(User user);

 

ex) 사용자 이름으로 게시글 검색

Post 엔티티와 연관된 User 엔티티의 username 필드를 기반으로 게시글 검색

List<Post> findByUserUsernameContaining(String username);
728x90

+ Recent posts