Skip to content

Conversation

@yeonjinJoo
Copy link

@yeonjinJoo yeonjinJoo commented Jan 16, 2026

완료 작업 목록

  • 이미지 파싱 기능 추가
  • 게시글 업로드 기능 추가
  • 마이페이지 이미지 변경 기능 추가

TODO

  • 업로드한 글을 index.html에서 보여주기

주요 고민 사항과 해결 방안

문제 상황

기존에는 각 Repository 메서드마다 Connection을 직접 획득하고 해제하는 로직을 반복적으로 작성하고 있었다.
이로 인해 Repository 코드에 커넥션 관리 코드가 섞이면서, 실제 DB 접근 로직의 가독성이 떨어지고 코드 길이가 불필요하게 길어지는 문제가 발생했다.

해결 방안

커넥션 관리 책임을 분리하기 위해 JdbcTx 유틸 클래스를 도입했다. Functional Interface를 정의하고 람다를 활용해, Connection 획득·해제 및 예외 처리 로직을 공통화하고 Repository에서는 DB 접근 로직만 작성하도록 구조를 개선했다.

@FunctionalInterface
public interface Work<T> {
    T run(Connection conn) throws Exception;
}

public static <T> T execute(Work<T> work) {
    try (Connection conn = DBConfig.getConnection()) {
        return work.run(conn);
    } catch (Exception e) {
        throw rethrow(e);
    }
}

이를 통해 Repository 코드에서 반복되던 보일러플레이트 코드를 제거하고, 관심사 분리가 명확한 구조로 리팩토링할 수 있었다.

@yeonjinJoo yeonjinJoo changed the title [주연진] 웹 서버 7단계 - [주연진] 웹 서버 7단계 - 이미지 업로드 구현 완료 Jan 16, 2026
@yeonjinJoo yeonjinJoo added the 3-2 label Jan 16, 2026
@github-actions github-actions bot merged commit ba4030e into softeerbootcamp-7th:yeonjinJoo Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant