-
existsBy, countBy (JPA)Spring 2022. 2. 13. 18:52
미션을 진행하다가 넘어온 아이디로 조회한 객체가 존재하지 않을 때 예외를 발생시켜야 하는 부분에서
실제 객체를 찾고 null객체인지 확인하는 방법으로 체크를 하였는데
이 부분을 existsBy로 하여 JPA를 활용하도록 피드백을 받게 되었다.
null 객체 확인 방법 ( 기존에 하던 방법 )
public ReviewDTO update(ReviewCreateDTO reviewCreateDTO) { if (reviewRepository.findById(reviewCreateDTO.getId()) == null) { throw new ReviewNotFoundException(); } }
하려고 하는 의도가 어떤 것인지 명확하지 않고 불필요한 부분이 존재한다.
existsBy
public ReviewDTO update(ReviewCreateDTO reviewCreateDTO) { if (!reviewRepository.existsById(reviewCreateDTO.getId())) { throw new ReviewNotFoundException(); } }
나타내고자 하는 의도가 무엇인지 분명하게 나타낼 수 있고 select~ limit 1 쿼리를 이용하여 성능을 개선할 수 있다.
countBy
reviewRepository.countByProductId(reviewCreateDTO.getProductId())
추가로 countBy 조건을 이용하면 select count(*)쿼리를 이용하여 찾고자 하는 데이터의 갯수를 반환 받을 수 있다.
( 참고한 사이트 )
https://shirohoo.github.io/spring/spring-data-jpa/2021-05-21-exists/
'Spring' 카테고리의 다른 글
a collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance 발생 시 (0) 2022.02.16 @ParameterizedTest사용할 때 java.lang.NoSuchMethodException 발생 시 (0) 2022.02.16 인수테스트 (Acceptance Test) ① 환경 구축 및 작성 (0) 2022.02.08 테스트를 위한 Mock과 그 외의 Test Double (0) 2022.02.03 Service Layer의 단위테스트 작성 : (2) Fake 객체 (0) 2022.02.03