Spring/Spring Boot

[Spring Data Jpa] delete(Entity e) vs deleteById 차이

민돌v 2022. 9. 26. 18:06

 

그저 궁금해서 알아보는 jpa delete 와 deletById 의 차이점

 

 

결론부터 말하면 똑같다.

  • deleteById 는 findbyId + delete(entity e) 의 과정이 합쳐진 메소드라고 볼 수있습니다.

 

👏🏻 두 메소드의 차이점은

  •  deleteById를 사용하면 내부적인 findById 조회 시 값이 없을 경우 EmptyResultDataAccessException 이 발생한다는 점 입니다.
  • 따라서 엔티티조회시, 커스텀한 익셉션을 떨어트려 메세지를 담고싶다면 delete 를 사용하는게 마음이 더 편하다..?

 

public Notice getNotice(final Integer idx) {
    return noticeRepository.findById(idx).orElseThrow(
        () -> new EntityNotFoundException(idx + " 에 해당하는 공지사항이 없습니다.")
    );
}

public void delete(final Integer idx) {
    noticeRepository.delete(getNotice(idx));
}

public void deleteById(final Integer idx) {
    noticeRepository.deleteById(notice);
}

 

성능적인 이슈는 두 메소드의 차이가 없는 것 같습니다!!

 

 

 

 

 

 

 

*참고