Spring Data JPA
Spring Data JPA는 스프링에서 JPA를 편리하게 사용할 수 있도록 지원하는 모듈이다.
데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결할 수 있게 해준다. CRUD 처리를 위한 공통 인터페이스를 제공해주고, 인터페이스만 작성하면 동적으로 구현체를 생성해서 주입해주기 때문에 인터페이스만 작성해도 개발을 완료할 수 있다. (설정과 구현에 대한 내용은 아래 링크 참고)
https://blog.naver.com/ghdalswl77/222314410957
반환 타입
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을 발생시키지 않는 방향으로 기능을 제공한다.
'☕️자바 𝗝𝗔𝗩𝗔' 카테고리의 다른 글
도메인 모델 패턴, 트랜잭션 스크립트 패턴 (Domain Model Pattern, Transaction Script Pattern) (1) | 2022.10.03 |
---|---|
[JPA] validMemberEmailDuplicate 문제점 (1) | 2022.09.30 |
[Spring Data JPA] extends JpaRepository VS @Repository (0) | 2022.09.30 |
[JPA] 엔티티 설계 시 주의점 (setter 지양, 즉시로딩 지양) (1) | 2022.09.26 |
[JPA] 영속성 전이, 고아 객체 (cascade 범위) (1) | 2022.09.24 |
댓글