Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JDBC 라이브러리 구현하기 - 4단계] 무민(박무현) 미션 제출합니다. #533

Merged
merged 12 commits into from
Oct 11, 2023

Conversation

parkmuhyeun
Copy link
Member

안녕하세요 라온 😎 드디어 마지막 단계네요!
새벽이지만 오늘 휴일이라 햅삐합니다 ㅎㅎㅎ 🚀

추상화 구조는 저번이랑 비슷하기 때문에 이미지는 딱히 첨부 안했습니다!

1단계부터 예외 처리하는 부분이 신경쓰이긴 하지만 딱히 더 개선할 방법이 생각이 안 나네요...ㅠ
혹시 라온은 다르게 처리하였다면 어떻게 처리하셨는지 궁금하네요! 혹은 미션하시면서 이 부분은 중점적으로 적용했다 하신 부분이 있을까요!?

마지막까지 화이팅하세요~!

@parkmuhyeun parkmuhyeun self-assigned this Oct 8, 2023
Copy link

@mcodnjs mcodnjs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요, 무민!
휴일은 잘 보내셨나요 🫠 벌써 마지막 단계까지 왔네요 ㅎㅎ

3단계에서 남긴 코멘트 반영은 커밋을 통해 모두 확인했습니다!
사라질 메서드인데도 반영해주신거 👍

TransactionSynchronizationManager의 리소스 처리 부분에 대해서만 코멘트 조금 남겼어요!
현재 구현하신 부분들에 대한 테스트 코드를 작성하신다면 조금 더 단단한 코드가 될 거 같아요!!

무민이 질문 주신 부분에서, 부끄럽지만 저는 예외 처리 관련해서 깊게 고민을 하진 않았던 것 같아요 ㅠㅠ
구현에만 급급했다랄까 .. 말씀 주신 부분은 저도 조금 더 고민해보겠습니다 ㅎㅎ
오늘 마무리되는 일정인 만큼 다음 요청에서는 바로 머지하도록 하겠습니다 🙃
4단계도 수고하셨습니다!

Comment on lines 20 to 27
public static void bindResource(DataSource key, Connection value) {
resources.set(Map.of(key, value));
}

public static Connection unbindResource(DataSource key) {
return null;
final Connection connection = resources.get().get(key);
resources.remove();
return connection;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. getResource() 의 경우에는 resources.get() 으로 발생하는 NPE를 예방하고자 null 검사를 하고 있는데요,
    bindResource()unbindResource()는 null 처리가 필요없을까요?! 혹은 미리 초기화해두는 방법도 있을 거 같아요!

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 리소스 처리 관련해서 데이터소스에 이미 바인딩된 커넥션이 있는 경우, 바인딩된 커넥션이 없는 경우 등을 고려한다면 조금 더 방어적인 코드가 될 거 같아요 !!

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. bindResource() unbindResource()의 로직이 무민이 생각하신대로 동작하는지 확인해보면 어떨까요? 현재 두 로직은 Map을 활용하지 못하고 있는거 같아요 ..! 현재 로직으로선 하나의 데이터소스에 대한 커넥션만 resources에 담기지 않을까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙌

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네이밍 좋은데요? 👍

this.dataSource = dataSource;
}

public <T> T execute(BusinessLogicProcessor<T> businessLogicProcessor) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines 34 to 40
private void rollbackAndThrowException(final Connection connection, final Exception e) {
try {
connection.rollback();
} catch (SQLException ex) {
throw new DataAccessException(ex);
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

파라미터로 넘어온 Exception이 사용되는 것이 없는거 같아요 👀

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

매의 눈 👍🏻

Copy link

@mcodnjs mcodnjs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요, 무민!
코멘트 남긴 것들 잘 반영해주신거 같아요
항상 뚝딱뚝딱 잘 구현하시네요 👍

JDBC 4단계까지 고생많으셨습니다 ~!
레거시 코드 리팩토링 미션도 파이팅하시고
레벨4도 마지막까지 파이팅입니다 !!!!
수고하셨습니다 🙃😁😊

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines +15 to +21
if (resources.get() == null) {
return null;
}
if (key == null) {
throw new IllegalArgumentException("Key must not be null");
}
return resources.get().get(key);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반복되는 resources.get()을 줄여봐도 좋겠네요!

@mcodnjs mcodnjs merged commit dffba20 into woowacourse:parkmuhyeun Oct 11, 2023
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants