스프링 데이터 JPA는 유연한 반환 타입 지원
public interface MemberRepository extends JpaRepository<Member, Long> {
// 반환 타입
List<Member> findListByUsername(String username); //컬렉션
Member findMemberByUsername(String username); //단건
Optional<Member> findOptionalByUsername(String username); //단건 Optional
}
제공 타입 : 공식 문서 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types
조회 결과가 많거나 없으면?
컬렉션
결과 없음: 빈 컬렉션 반환 (empty 컬랙션 반환되므로 != null 으로 안걸러짐)
단건 조회
결과 없음: null 반환
결과가 2건 이상: javax.persistence.NonUniqueResultException 예외 발생
> 참고: 단건으로 지정한 메서드를 호출하면 스프링 데이터 JPA는 내부에서 JPQL의 Query.getSingleResult() 메서드를 호출한다.
이 메서드를 호출했을 때 조회 결과가 없으면 javax.persistence.NoResultException 예외가 발생하는데 개발자 입장에서 다루기가 상당히 불편하다.
스프링 데이터 JPA는 단건을 조회할 때 이 예외가 발생하면 예외를 무시하고 대신에 null 을 반환한다.
'프로그래밍 > SpringDataJPA' 카테고리의 다른 글
스프링 데이터 JPA 페이징과 정렬 (0) | 2022.06.18 |
---|---|
순수 JPA 페이징과 정렬 (0) | 2022.06.18 |
Logging 설정 (0) | 2022.06.18 |
파라미터 바인딩 (0) | 2022.06.18 |
@Query, 값, DTO 조회하기 (0) | 2022.06.18 |