본문 바로가기
☕️자바 𝗝𝗔𝗩𝗔

[JPA] Spring Data JPA 반환 타입

by 비타민찌 2022. 9. 30.
728x90

Spring Data JPA

Spring Data JPA는 스프링에서 JPA를 편리하게 사용할 수 있도록 지원하는 모듈이다.

데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결할 수 있게 해준다. CRUD 처리를 위한 공통 인터페이스를 제공해주고, 인터페이스만 작성하면 동적으로 구현체를 생성해서 주입해주기 때문에 인터페이스만 작성해도 개발을 완료할 수 있다. (설정과 구현에 대한 내용은 아래 링크 참고)

 

https://blog.naver.com/ghdalswl77/222314410957

 

Spring Data JPA

1. Spring Data JPA Spring Data JPA는, JPA를 쓰기 편하게 만들어 놓은 모듈이다. 스프링 부...

blog.naver.com

 

반환 타입

Spring Data JPA는 유연한 반환 타입을 지원한다. (참고: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types) 기본적으로 결과가 한 건 이상이면 컬렉션 인터페이스를 사용하고, 단건이면 반환 타입을 지정한다.

List<Member> findByMember(String name); // 컬렉션  
Member findByEmail(String email); // 단건

단건의 경우, T 형태와 Optional<T> 형태 2개로 받을 수 있다. 결과가 2건이상 나오면 javax.persistence.NonUniqueResultException 예외가 발생하고, 결과가 0건일 경우 T는 null, Optional<T>는 Optional.empty() 를 리턴한다. 참고로 단건의 경우 내부적으로 query.getSingleResult()를 사용해서 결과가 0건일 경우 javax.persistence.NoResultException이 발생해야하지만, 이는 다루기가 까다로우므로 exception을 발생시키지 않는 방향으로 기능을 제공한다.

 

728x90

댓글