본문 바로가기
JPA

JPA_Repository Query

by 요료료룡 2024. 4. 2.

안녕하세요 오늘은 JPA Repository Query에 대해서 작성해보려 합니다.

 

JpaRepository <T, ID> 사용 방법입니다.

Entity클래스 명 + Repository로 인터페이스 생성 후 JpaRepository를 상속 → JpaRepository를 상속받으면 구현체인 SimpleJpaRepository가 생성되어 상속받은 모든 메서드들을 사용할 수 있게 됩니다.

public interface MemberRepository extends JpaRepository <Member, Long> {
}

 

- 간단한 쿼리일 경우 사용하는 쿼리메서드에 대해 살펴보겠습니다.

    • 조회 : find…By, read…By, query…By, get…By
      • ex) findHelloBy처럼 …에 식별하기 위한 내용(설명)이 들어가도 되며, 메서드 이름으로 쿼리 생성
    키워드 설명
    find...By 조회
    read…By 조회
    get…By 조회
    query…By 조회
    search…By 조회
    stream…By 조회
    exists…By 조회, boolean 반환
    count…By count조회, long 반환
    delete…By 삭제, long 반환
    remove…By 삭제, long 반환
    …Distinct… 중복 제외하여 조회

다음으로는 흔히 사용할 수 있는 주요 메서드에 대해서 살펴보겠습니다.

메서드 설명
<S extendsT> save(S entity) 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합
delete(T entity) 엔티티 하나를 삭제한다. EntityManager.remove() 호출
Optional<T> findById(ID id) 엔티티 하나를 조회한다. EntityManager.find() 호출
T getOne(Id id) 엔티티 프록시로 조회한다. EntityManager.getReference() 호출
List<S> findAll(…) 모든 엔티티를 조회. 정렬(Sort)이나 페이징(Pageable)조건을 파라미터로 제공 가능

 

다음으로는 Query Method에 포함할 수 있는 키워드에 대해 살펴보겠습니다.

메서드 이름 설명 예시
And 여러필드를 and로 검색 findByEmailAndUserId(String email, String userId)
Or 여러필드를 or로 검색 findByEmailOrUserId(String email, String userId)
Between 필드의 두 값 사이에 있는 항목 검색 findByCreatedAtBetween(Date fromDate, Date toDate)
LessThen 작은 항목 검색 findByAgeGraterThanEqual(int age)
GreaterThanEqual 크거나 같은 항목 검색 findByAgeGraterThanEqual(int age)
Like like 검색 findByNameLike(String name)
isNull null인 항목 검색 findByJobIsNull()
In 여러 값중에 하나인 항목 검색 findByJob(String … jobs)
OrderBy 검색 결과를 정렬하여 전달 findByEmailOrderByNameAsc(String email)

 

마지막으로 포함하는 값 찾는 메서드입니다.

메소드 설명
Like, Containing, Contains, IsContaning ~을 포함하는 값
StartingWith, IsStartingWith, StartsWith ~으로 시작하는 값
EndingWith, IsEndingWith,EndsWith ~으로 끝나는 값
IgnoreCase 대소문자 무시
Not ~을 포함하지 않은

 

 

이렇게 다양한 쿼리 메서드에 대해서 알아봤습니다. 

저는 쿼리메서드를 자주 사용하다 보니 더 간편하고 좋다는 느낌을 받았습니다.

여러분들도 한번 사용하여, 편하다는 느낌과 간편하다, 좋다는 느낌을 받았으면 좋을 것 같습니다~!

 

오늘은 여기서 포스팅 마치겠습니다. 긴 글 읽어주셔서 감사합니다.

'JPA' 카테고리의 다른 글

[Spring] Spring Security(1)  (1) 2024.04.19
[JPA] Fetch Type  (0) 2024.04.17
[JPA] Mapping (매핑)  (0) 2024.04.17
@EqualsAndHashCode  (0) 2024.04.01
JPA Annotation 정리  (2) 2024.03.29