8. 반환 타입

민정·2022년 12월 12일
0

Spring Data JPA

목록 보기
8/17
post-thumbnail

✨ Spring Data JPA의 유연한 반환 타입 지원

	// 컬렉션
    List<Member> findByUsername(String username); 
    
    // 단건
    Member findByUsername(String username); 
    
    // 단건, Optional
    Optional<Member> findByUsername(String username); 

Spring Data JPA가 지원하는 많은 타입
참고 : 공식 문서



✨ 결과가 많거나 적은 경우

컬렉션

  • 결과 0개 : 빈 컬렉션 반환([])

🚨주의🚨
실무에서 아래의 처럼 컬렉션 반환 결과 없는 경우를 null 체크 하는 실수 많이 발생!!

List<Member> result = memberRepository.findByUsername("없는 이름");
if(result != null){ 
	...
}

단건조회

  • 결과 0개 : null 반환
  • 결과 2개 이상 : javax.persistence.NonUniqueResultException 예외 발생

참고!

단건 조회 결과 0개일 때, 순수 JPA와 Spring Data JPA의 차이

  • 순수 JPA
    getSingleResult의 결과 0개의 결과 조회시 : NoResultException 에러 발생.
  • Spring Data JPA
    단건 조회 결과 0개의 결과 조회시 : null 반환.
  • 참고로 JAVA8의 Optional 등장 이후에는 null일 수도 있고 아닐 수도 있다면 무조건 Optional 사용


✨ 값을 찾지 못했을 때 출력 결과


위에서 부터 각각 컬렉션 조회, 단건 조회, 단건 + optional 조회 일 때, 0개의 결과를 조회시 출력 결과


출처

김영한 강사님 - 인프런 실전! 스프링 데이터 JPA

0개의 댓글