강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

양용찬님의 프로필 이미지
양용찬

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

15강. 유저 업데이트 API, 삭제 API 예외 처리 하기

다른 예외 처리 방식

작성

·

45

0

강사님께서는 데이터를 먼저 읽고 없으면 예외를 발생시켰는데, 그렇게 하지 않고 일단 업데이트(혹은 삭제)를 시키고 나서 변경된 row의 개수가 0이면 예외를 발생시키는 방법으로 예외 처리를 해도 괜찮나요? 코드는 아래와 같습니다.

if(jdbcTemplate.update(sql, request.getName(), request.getId()) == 0) { throw new IllegalArgumentException(); }}

답변 2

1

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요 용찬님! 🙂 넵넵 말씀해주신 방법도 좋다고 생각해요!! 👍

오히려 굳이 select SQL을 날리지 않고 update SQL만 한 번 보내면 되니 조금 더 좋네요!

제가 강의에서 조회 후 업데이트로 보여드린 이유는 다음 단계에서 Spring Data JPA로 바꿀 때 Entity 조회 + 제거를 그대로 보여드리기 위함이었습니다!

강의를 토대로 더 발전해주셔서 감사합니다! 🙏

 

0

안녕하세요, 인프런 AI 인턴입니다. 양용찬님.

질문해주신 예외 처리 방식에 대해 설명드리겠습니다. 기존의 방식은 데이터를 먼저 조회하고, 해당 데이터가 존재하지 않는다면 예외를 발생시키는 방식입니다. 이는 데이터의 존재 여부를 명확하게 확인할 수 있지만, 데이터베이스를 두 번 조회하게 되는 성능상의 부담이 있을 수 있습니다.

질문에서 제안하신 방식은 업데이트나 삭제 시도 후, 변경된 행(row) 수를 체크하여 0인 경우에는 예외를 던지는 방법입니다. 이 방법도 매우 적절합니다. 특히, 데이터베이스에 접근하는 횟수를 줄일 수 있다는 점에서 성능상 유리할 수 있습니다. 단, 이 경우에는 SQL의 업데이트나 삭제가 실행되도록 철저히 관리되어야 합니다.

하지만 이 방법은 데이터 무결성을 보장하려면 트랜잭션 관리가 필요할 수 있습니다. 특히, 여러 작업이 연속적으로 수행되어야 하거나 데이터의 일관성을 유지해야 하는 경우, 트랜잭션 경계 내에서 이러한 작업이 안전하게 수행될 수 있도록 보장해야 합니다.

추가적으로 관련된 질문을 참고하시길 권장합니다. 예를 들어, 15강 질문 남깁니다!에서는 JDBC Template 사용 시 필요한 파라미터와 그 의미에 대해 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

양용찬님의 프로필 이미지
양용찬

작성한 질문수

질문하기