더미 데이터 delete
삭제를 구현해보겠다.
아래처럼 간단하게(?) 코드를 짜보았다. (이렇게 위험하게 짜면 안된다는 거 알지만 ㅎㅎ)
@DeleteMapping("/dummy/user/{id}")
public String deleteUser(@PathVariable int id) {
userRepository.deleteById(id);
return "삭제되었습니다. id : " + id;
}
그런데 이 코드의 문제는 만약 id가 User 객체에 없다면 에러가 발생한다.
현재는 id가 1, 2, 3인 User만 DB에 있다.
없는 id인 5를 넘겼더니 예상했듯이 에러가 발생한다.
@DeleteMapping("/dummy/user/{id}")
public String deleteUser(@PathVariable int id) {
try {
userRepository.deleteById(id);
} catch (IllegalArgumentException e) {
return "삭제에 실패하였습니다. 해당 id는 DB에 없습니다.";
}
return "삭제되었습니다. id : " + id;
}
try-catch 문을 사용하여 IllegalArgumentException 으로 에러 처리를 해보았다.
여전히 위와 똑같은 에러가 발생한다.
뭐지 ❓❓❓❓❓❓❓
아!! EmptyResultDataAccessException 을 사용해야 하네?!
@DeleteMapping("/dummy/user/{id}")
public String deleteUser(@PathVariable int id) {
try {
userRepository.deleteById(id);
} catch (EmptyResultDataAccessException e) {
return "삭제에 실패하였습니다. 해당 id는 DB에 없습니다.";
}
return "삭제되었습니다. id : " + id;
}
된다!!
💡 모든 Exception의 부모인 Exception을 걸어도 된다. (Exception e) !!
하지만, 부모 Exception을 걸면 다른 Exception이 걸릴 수 있는 위험이 있으므로 정확하게 EmptyResultDataAccessException 을 잡는 것이 좋다.
id가 1번인 User 삭제 완료~!
Author And Source
이 문제에 관하여(더미 데이터 delete), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rladuswl/더미-데이터-delete저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)