728x90
글을 쓰게 된 이유
Spring Data JPA를 사용하면서 findById, getById 가 있는 것을 보고 둘은 어떤 차이가 있는지 궁금해서 찾아보았습니다.
JpaRepository, CrudRepository
전의 글에서 JpaRepository와 CrudRepository를 비교해보았는데 findById, getById도 연관이 있을 줄은 몰랐습니다,,
아무튼 Spring Data 를 사용하면서 id를 통해 엔티티를 조회하는 메서드가 JpaRepository, CrudRepository에 존재합니다.
하지만 각 메서드의 이름은 다르고, 반환형도 다릅니다.
왜 굳이 메서드 이름과, 반환형을 다르게 했을까요?(아무 이유 없이 그냥 만든 것은 아니라고 생각,,)
//CrudRepository
Optional<T> findById(ID id);
//JpaRepository
//@return a reference to the entity with the given identifier.
T getById(ID id);
Optional에 대해 간단히 말하자면 결과가 없음을 명확하게 나타내는 방법이 필요한 라이브러리 메서드의 반환 값 유형에 제한된 메커니즘을 제공하기 위해 추가되었다고 합니다.
CrudRepository의 find
- 결과가 안 나올 수 있음
- can return NULL
- 예) 서점에서 사용자가 책을 검색할 경우 책이 있을 수 있고, 없을 수 있음
JpaRepository의 get
- 엔티티가 존재하지 않으면 예외를 발생시킴
- 일치 항목이 "존재"한다고 가정
- 항상 무언가가 반환되야함
- never return NULL
- 예) 사용자가 구매한 책을 배송하려고 주문한 책을 조회하는데 이때는 책이 "무조건" 존재해야함
REFERENCES
728x90
'Spring Data' 카테고리의 다른 글
Spring Data JPA Optimistic lock, Pessimistic lock (0) | 2023.01.03 |
---|---|
@NotNull vs @Column(nullable = false) (0) | 2022.10.22 |
JpaRepository vs CrudRepository (0) | 2022.08.23 |
Spring Data JPA에서의 벌크 삭제 정리 (0) | 2022.07.12 |
[YAPP] 검색 성능 최적화 일지(Feat. Elasticsearch) (0) | 2022.07.08 |