[SpringBoot] - 테스트코드를 통한 CRUD 연습(2)

ACAI BERRY DEVELOVER·2023년 6월 17일
0
post-thumbnail

삭제 작업 테스트

  • deleteById(키타입) : 리턴타입은 void이고 만일 해당 데이터가 존재하지 않으면 org.springframework.EmptyResultDataAccessException 예외가 발생.

삭제 작업은 삭제하려는 번호의 엔티티객체가 있는지 선 확인 후 삭제 작업이 진행된다.

 //삭제작업테스트
    @Test
    public void testDelete(){

        Long mno = 100L;
        memoRepository.deleteById(mno);
    }
Hibernate: 
    select
        m1_0.mno,
        m1_0.memo_text 
    from
        tbl_memo m1_0 
    where
        m1_0.mno=?
Hibernate: 
    delete 
    from
        tbl_memo 
    where
        mno=?

실행결과는 select 이후에 delete 구문이 실행되는 방식으로 동작한다.

★ 추가로 Spring data JPA에는 delete 관련 메소드는 'deleteById'와 'delete'가 있다. 기능상으로 동등하나 DeletebyId는 키값이 없을 경우 메소드 자체에서 EmptyResultDataAccessException 예외를 발생시키며, delete는 인스턴스가 없으면 nullPointerException을 발생시킨다. 또한 deleteById는 내부에서 findById를 조회하는데 사용하고 있으며 Id값에 대한 null을 체크해주기때문에 nullPointerException을 예방해준다.

delete는 보통 서비스단에서 findById와 같이 쓰인다. findById와 같이 쓰면 예외처리를 직접 커스텀할 수 있다고 한다.(아직 이해 불가능..)

Reference
https://hwanchang.tistory.com/7

profile
쓸때 대충 쓰지 말고! 공부하면서 써!

0개의 댓글