• [Spring Data Jpa] delete VS deleteById

    2022. 11. 13.

    by. 내이름은 킹햄찌

    서론

    Spring Data를 사용하면 JpaRepository<T,ID> 를 상속받는 interface를 상속 받는 것만으로도 기본적인 CRUD를 사용가능 하게 된다. Jpa를 사용하여 프로젝트를 진행하던 도중 엔티티를 삭제하는 delete와 deleteById 두 가지 방법이 있다는 것을 알게 되었다. 혹여 성능에 차이가 있지는 않을까 하는 생각으로 확인 해보았고 그 내용을 공유하려 한다.

     

     

     

    본론

    우선 delete와 deleteById는 CrudRepository에 정의 되어 있고 그 구현은 SimpleJpaRepository에 구현되어 있다.

    deleteById

    delete

    deleteById는 내부에서 findById를 통해 Entitiy를 조회하여 delete로 넘겨주게 된다. 다만 findById에서 조회하는 과정에서 문제가 발생하면 EmptyResultDataAccessException가 발생한다는 것이다.

    Exception컨트롤 측면에서 어떤 함수를 사용하는 것이 적절한지에 대한 판단을 내리면 될 것 같다.

     

     

     

    결론

    • deleteById는 내부에서 delete를 통해 Entity를 삭제함
    • deleteById 사용시 Entity Id로 Entity를 삭제하는데 한줄의 코드만 사용할 수 있음
    • delete 사용시 Exception을 직접 컨트롤 할 수 있음

    본인은 대부분의 경우에서 Exception을 제어 하기를 원하기 때문에 findById를 통해 Entity를 조회하고 delete를 호출하는 방식만을 사용하게 될 것 같음

    댓글