JPA 이름 규칙

JPA 이름 규칙

< 첫번째 By 이전 >

  • find...By
    • 가장 많이 사용하는 단건 조회 키워드입니다.
    • 복수는 Collection, Page 조회 가능
  • exists...By
    • 조회 유무를 boolean타입으로 반환합니다.
  • counts...By
    • 검색 결과 총 record 수를 반환합니다.
  • ...First<number>...
    • 결과값 수를 제한합니다. (First, Top)
//조회할 record가 1개인 경우 별도의 인자 설정 없이 가능합니다

Optional<Member> findFirstByOrderByIdDesc();
Optional<Member> findTopByOrderByIdDesc();
//1보다 크거나 페이징 처리가 필요할때 Pageable또는 Sort인자를 설정합니다
//pageable, sort는 null사용이 불가합니다.
//사용하지 않을땐 Sort.unsorted(), Pageable,unpaged() 사용합니다.

Page<Member>findFirst5ByStatus(String status, Pageable pageable);
Slice<Member>findTop10ByType(String type, Pageable pageable);
List<Member>findFirst10ByGender(String gender, Sort sort);
List<Member>findTop3ByStatus(String status, Pageable pageable);
  • Pageable 인스턴스 -> 추후 정리

< 첫번째 By 이후>

  • Distinct
// 중복 데이터를 없애고 고유한 값만 가져온다.

Optional<Member> findDistinctByLastnameAndFirstname(String lastname, String firstname);
// = select distinct * from where lastname = <?> and firstname = <?>;
  • And
//두 가지 조건을 모두 적용합니다.

Optional<Member> findByLastnameAndFirstname(String lastname,String firstname);
//= select * where lastname = <?> and firstname = <?>;
  • Or
//두 조건 중 하나라도 참인 값을 포함합니다.

Optional<Member> findByLastnameOrFirstname(String lastname, String firstname);
//= select * where lastname = <?> or firstname = <?>;
  • Is, Equals
// 기본 일치

Optional<Member> findByFirstname(String firstname);
Optional<Member> findByFirstnameIs(String firstname);
Optional<Member> findByFirstnameEquals(String firstname);
// = select * where firstname = <?>;
  • Not
//단순 불일치 조건
Optional<Member> findByFirstnameNot(String fisrtname);
//= select * where firstname != <?>;
  • Null, NotNull
// 칼럼값이 Null인 레코드를 검색하는 Null, Null이 아닌 레코드를 검색하는 NotNull

Optional<Member> findByFirstnameNull();
//= select * where firstname IS NULL;

Optional<Member> findByFirstnameNotNull();
//= select * where firstname IS NOTNULL;

 

'Java > JPA' 카테고리의 다른 글

[JPA] JPQL과 Querydsl (feat. 동적쿼리)  (0) 2023.12.11