본문 바로가기

Spring/JPA

Spring JPA - 비동기 쿼리 결과 더보기
Spring JPA - 스트리밍 쿼리 결과 더보기
Spring JPA - 리포지토리 메서드의 Null 처리 더보기
Spring JPA - 컬렉션(Collections) 또는 이터러블(Iterables)을 반환하는 리포지토리 메서드 여러 결과를 반환하는 쿼리 메서드는 표준 Java Iterable, List 및 Set을 사용할 수 있습니다. 그 외에도 Iterable의 사용자 정의 확장인 Spring Data의 Streamable과 Vavr에서 제공하는 컬렉션 유형 반환을 지원합니다. 지원되는 모든 쿼리 메서드 반환 유형을 설명하는 부록을 참조하세요. 🔍 지원되는 쿼리 반환 유형 일반적으로 Spring Data 리포지토리에서 지원하는 반환 유형 여기에 나열된 일부 유형은 특정 저장소에서 지원되지 않을 수 있으므로 지원되는 반환 유형의 정확한 목록은 저장소 별 문서를 참조. ✅ 지리 공간 유형(예: GeoResult, GeoResults및 GeoPage)은 지리 공간 쿼리를 지원하는 데이터 저장소에만 사용할 수 있습니다. 일부 저장소.. 더보기
Spring JPA - 쿼리 결과 제한 서로 바꿔서 사용할 수 있는 fist 또는 top 키워드를 사용하여 쿼리 메서드의 결과를 제한할 수 있습니다. 선택적인 숫자 값을 top 또는 first에 추가하여 반환할 최대 결과 크기를 지정할 수 있습니다. 숫자를 생략하면 결과 크기가 1로 가정됩니다. // Top와 First를 사용하여 쿼리 결과 크기 제한 User findFirstByOrderByLastnameAsc(); User findTopByOrderByAgeDesc(); Page queryFirst10ByLastname(String lastname, Pageable pageable); Slice findTop3ByLastname(String lastname, Pageable pageable); List findFirst10ByLastnam.. 더보기
Spring JPA - 특수 매개변수 처리 쿼리의 매개변수를 처리하려면 메서드 매개변수를 정의해야한다. 그 외에도 인프라는 Pageable과 Sort같은 특정 유형을 인식하여 페이지 매김 및 정렬을 쿼리에 동적으로 적용한다. // 쿼리 메서드에서 Pageable, Slice, Sort 사용 Page findByLastname(String lastname, Pageable pageable); Slice findByLastname(String lastname, Pageable pageable); List findByLastname(String lastname, Sort sort); List findByLastname(String lastname, Pageable pageable); ❗️Sort 및 Pageable을 사용하는 API는 null이 아닌 .. 더보기
Spring JPA - 속성 표현식 속성 식은 관리되는 Entity의 직접 속성만 참조할 수 있다. 쿼리 생성 시, 구문 분석된 속성은 관리되는 도메인 클래스의 속성이다. 그러나 중첩된 속성을 조회하여 제약 조건을 정의할 수 있다. List findByAddressZipCode(ZipCode zipCode); Person에게 우편번호와 함께 주소가 있다고 가정한다. 이 경우 메서드는 x.address.zipCode 속성 순회를 만든다. 해결 알고리즘은 전체 부분(AddressZipCode)을 속성으로 해석하여 시작하고, 도메인 클래스에서 그 이름(대문자 없음)의 속성을 체크한다. 만약 알고리즘이 성공하면 그 속성을 사용한다. 그렇지 않으면 그 알고리즘은 카멜 케이스의 출처(원래 코드)를 오른쪽부터 머리와 꼬리를 분할하고 일치하는 속성을 찾.. 더보기
Spring JPA - 쿼리 생성 The query builder mechanism built into the Spring Data repository infrastructure is useful for building constraining queries over entities of the repository. The following example shows how to create a number of queries: // 메서드 이름에서 쿼리 생성 interface PersonRepository extends Repository { List findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname); // Enables the distinct flag fo.. 더보기