[2단계 - JDBC 라이브러리 구현하기] 조조(조은별) 미션 제출합니다.#658
[2단계 - JDBC 라이브러리 구현하기] 조조(조은별) 미션 제출합니다.#658cutehumanS2 merged 25 commits intowoowacourse:eun-byeolfrom
Conversation
→ 저는 조조가 이미 요구사항에 맞게 작성했다고 생각합니다. ㅎ ㅎ 처음에 조조가 SQLException을 RuntimeException으로 변환해 준 순간부터 이미 이 요구사항을 만족한 게 아닐까요? 예외의 의미를 더 명확하게 하기 위해 DataAccessException으로 변경해 준 거고요~~
→ 조조의 의견에 동의합니다. |
|
냥인😽 리뷰 반영 후 다시 요청드려요~ 덕분에 이번에도 많이 배울 수 있었어요 감사해오 리뷰 외 주요 변경 사항 - query 메서드 변경before: PreparedStatementSetter 존재 유무에 따른 메서드 분리 after: 반환형(List, Optional)에 따른 메서드 분리 |
cutehumanS2
left a comment
There was a problem hiding this comment.
안녕하세요 조조~~ 🤍 냥인입니다.
반영도 굉장히 잘 해주시고 코멘트도 정성껏 달아주셔서 너무 감사합니다. 😸
리팩터링 너어무 잘 해주셔서 이만 머지해도 될 듯싶지만 !
조조가 혹시라도 아쉬워하실까 봐(…ㅋ.ㅋ) 코멘트 몇 가지 더 달아보았어요.
이번 미션 학습 목표 중 하나가 “중복을 제거하는 연습을 한다.”인 만큼 JdbcTemplate에 관해 세세하게 물어보기보다는 리팩터링 위주로 리뷰하려고 노력했어요. 그리고 간단한 질문 몇 가지도 같이 남겨 두었습니다.
가볍게 한 번 쭉 읽어 보시고,
조조가 필요하신 부분만 반영 & 답변하신 뒤 리뷰 요청 주십셔~~
다음 요청 땐 머지할 것 같아요~ ~ ~
조조 이번 주도 파이팅입니다. ㅎ‿ㅎ
| log.error(e.getMessage(), e); | ||
| throw new DataAccessException(e); | ||
| } | ||
| public final void update(String sql, Object... params) { |
There was a problem hiding this comment.
진짜 간단한 질문 ㅎ ㅎ
가변 인자를 사용한 메서드에 인자를 전달하지 않으면 어떻게 되나요?
There was a problem hiding this comment.
🚨에러 발생합니다~
org.h2.jdbc.JdbcSQLDataException: Parameter "#1" is not set; SQL statement:
There was a problem hiding this comment.
가변 인자를 사용한 메서드에 인자를 전달하지 않으면 기본적으로는 빈 배열을 전달하는데,
이제 파라미터 수에 대한 검증을 추가해 줬으니 조조가 말씀하신 대로 SQLException이 발생하겠죠?!
|
냥인~ 리뷰 반영 후 다시 요청드려요 정성스런 리뷰에 감동했어요..!!😽 즐거운 한글날 보내세요~~🍀 |
cutehumanS2
left a comment
There was a problem hiding this comment.
조조 ⭐️
반영 사항과 답변 모두 확인 완료하였습니다.
저 또한 조조에게 감동 .. . 🥺
이번 단계에서는 충분히 이야기를 나눠본 듯하니
다음 단계에서 또 이야기 나눠봐요.
이만 머지하겠습니다. 👋
조조도 즐거운 한글날 보내세요. ㅎ ㅎ🤍
냥인😽 안녕하세요~
이번 미션은 2단계에서 제시한 리팩터링 순서를 따라가면서 단계적으로 구현했습니다.
기존 구현한 JdbcTemplate(현재
LegacyJdbcTemplate)를 리팩터링 하지 않았고,JdbcTemplate을 사용하지 않았던 순수한
UserDaoImpl를 리팩터링 하여, 새로운JdbcTemplate을 구현했어요.질문이 있어요!
1. Unchecked Exception 요구사항 관련
요구사항 의도를 정확히 이해하지 못했어요.
JdbcTemplate에서SQLException을 캐치해서RuntimeException을 던지는 코드 ->DataAccessException로 던져주는 코드로 수정한게 전부입니다. 사실 이건 둘다 Unchecked라서 의도가 아닐것 같은데, 혹시 알고계시다면 공유 부탁드려요~2. JdbcTemplate 추상 클래스인 이유

그림에서는
JdbcTemplate에서getDataSouce()추상 메서드를 갖고 있어요. 의도를 이해하지 못했어요.그래서 전 추상 메서드를 만들지 않았습니다ㅎㅎ getter를 추상 메서드로 두면, 구현하는 쪽에서 계속 override 해줘야 하는데 큰 의미가 없는 코드였어요. 대신
JdbcTemplate에서DataSource를 필드로 갖고 사용하는 구조가 더 깔끔했어요. 이에 대해 냥인은 어떻게 생각하시나요? 제가 놓친 부분이 있다면 편하게 말씀해주세요~