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
'Spring' 카테고리의 다른 글
날씨 API 불러오기 - Weather API 사용 (0) | 2024.08.22 |
---|---|
Spring : @Controller와 @RestController의 차이 (0) | 2024.08.02 |
AWS : AWS IAM, AWS CLI (0) | 2024.06.21 |
[스프링 핵심 원리 - 기본편] #4 인프런 강의 정리(객체 지향 원리 적용 - 새로운 할인 정책 개발, 적용, 문제점) (2) | 2024.06.11 |
[스프링 핵심 원리 - 기본편] #3 인프런 강의 정리(예제만들기 - 회원 도메인 설계, 개발, 실행, 테스트) (1) | 2024.06.11 |