-
Notifications
You must be signed in to change notification settings - Fork 300
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단계] 엔초(권예진) 미션 제출합니다. #582
Conversation
…동일한 커넥션을 사용할 수 있도록 기능 추가
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요 엔초!
트랜잭션 관련 기능을 모두 외부 모듈로 옮겨주면서 프록시가 매우 깔끔하고 보기 좋네요😄
3단계에서 넘어오면서 불필요해진 부분들도 잘 정리해주셨고 예외 처리도 충분히 잘 해주신 것 같아요~
남긴 내용은 시간나실 때 읽어보시면 될 듯 하고
충분히 잘 정돈된 코드여서 이번 미션 이만 마칠까 합니다!
고생 많으셨습니다🙏
try { | ||
connection.setAutoCommit(false); | ||
log.info("transaction start"); | ||
public void execute(Runnable action) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 제 리뷰어의 꼼꼼함 덕분에 알게 되었는데요, Runnable 인터페이스의 JavaDoc을 읽으면 다음의 내용이 있더라구요!
The Runnable interface should be implemented by any class whose instances are intended to be executed by a thread. The class must define a method of no arguments called run.
https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html
추가적인 내용까지 간단히 해석해보았을 때 Runnable을 구현해 넘겨주는 곳에서는 해당 콜백 함수가 원 쓰레드의 작업과 별개의 쓰레드에서 실행되는 것을 사용 목표로 한다고 합니다!
저도 이 내용을 찾아본 뒤에 직접 만든 함수형 인터페이스를 사용하도록 변경했는데 엔초도 참고하시면 좋을 것 같아요!
private void transactionStart() throws SQLException { | ||
this.connection = DataSourceUtils.getConnection(dataSource); | ||
connection.setAutoCommit(false); | ||
log.info("transaction start"); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
트랜잭션 관련 내용을 메서드로 분리하니 사용처가 훨씬 간소화되고 좋네요 😊
} finally { | ||
DataSourceUtils.releaseTransactionConnection(connection, dataSource); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DataSourceUtils를 사용한 connection 해제 로직 잘 추가해주셨네요~😁
이전 단계에 대해 말씀주신 것은 해당 PR에 댓글 남겼습니다~ |
안녕하세요 모디!
4단계 구현 완료했습니다~
3단계 리뷰에서 질문 주신 부분에 대해서는 해당 pr에 답을 달아놓았습니다. 아래 토글에 사진도 첨부해 놓았으니 답변 확인만 하실 거라면 사진으로 보셔도 될 것 같습니다. pr 바로가기
사진
마지막 리뷰도 잘 부탁드립니다~