다른 예외 처리 방식
56
작성한 질문수 6
강사님께서는 데이터를 먼저 읽고 없으면 예외를 발생시켰는데, 그렇게 하지 않고 일단 업데이트(혹은 삭제)를 시키고 나서 변경된 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 사용 시 필요한 파라미터와 그 의미에 대해 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
리액트 관련 질문이 있습니다.
0
60
2
스프링부트 버전
0
66
2
7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.
0
55
2
33강. UserLoanHistory의 관계성에 대한 질문
1
51
2
Java JDK 버전 문의의 건
0
127
2
ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.
0
81
3
h2 console 접속했을 테이블 질문
1
62
1
ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨
0
71
2
15강. updateUser() 질문
0
51
2
깃허브 질
0
77
2
여기까지 다 끝냈다고 하셨는데
0
75
2
왜안될까요
0
67
2
MySQL 창이안ㄴ뜹니다
0
53
2
포스트맨
0
46
1
spring 개념적인 질문
0
68
2
인텔리제이 샘플코드 실행 안됨 오류
0
138
2
aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다
0
81
1
마이그레이션 오류입니다.
0
165
3
Whitelabel Error Page 오류가 났습니다.
0
156
2
안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ
1
87
3
궁금한게 있습니다.
0
54
2
DTO 관련
0
66
2
궁금한게 있습니다!
0
60
2
35강에서 returnBook 에서 userLoanHistory 값 중복에 관하여
0
54
2





