삭제 작업은 삭제하려는 번호의 엔티티객체가 있는지 선 확인 후 삭제 작업이 진행된다.
//삭제작업테스트
@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