페이지 트리
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

JDBC 기반으로 프로그래밍하다보면 정말 많은 중복이 발생한다. 이 중복을 어떻게 제거할 것인지에 대한 연습은 공통 라이브러리 코드를 어떻게 만드는 것이 좋을 것인지에 대한 학습을 하는데 큰 도움이 된다. JDBC 중복을 제거하는 과정을 보면 리팩토링을 어떻게 하는 것이 유연한 코드를 만들고, 깔끔한 코드를 만드는 것인지에 대한 경험을 할 수 있다. 이 과정에는 Template Method 패턴, Callback Interface등 디자인 패턴과 관련한 내용도 등장해야 한다. 디자인 패턴은 수 많은 선배 개발자들이 문제에 부딪혔을 때 좀 더 깔끔하고 유연한 코드를 만들기 위해 고민했던 흔적을 느껴볼 수 있다. 여력이 된다면 동영상을 본 후에 혼자 힘으로 리팩토링하는 연습을 해보면 좋겠다.

DAO 리팩토링 1 - insert, update, delete 중복 제거 

  • DAO 중복 코드에 대한 이슈 제기 
  • 라이브러리 코드와 개발자가 구현해야 하는 코드 분리 
  • abstract 키워드를 활용해 추상 클래스 구현 
  • 익명 클래스 사용 
  • insert, update, delete 문에 대한 중복 제거

DAO 리팩토링 2 - select 문 중복 제거 

  • select 쿼리에 대한 중복 코드 제거 
  • getConnection 메서드 중복 제거 및 테스트 코드 수정 
  • Template Method 패턴

DAO 리팩토링 3 - JdbcTemplate과 SelectJdbcTemplate 통합 

  • Template Method 패턴을 활용해 JdbcTemplate과 SelectJdbcTemplate 통합 
  • Template Method 패턴을 활용할 때의 문제점 
  • 각 Method를 interface로 분리해 JdbcTemplate과 SelectJdbcTemplate 통합

DAO 리팩토링 4 - 라이브러리 리팩토링 및 목록 기능 추가 

  • 자바 Generic을 활용해 캐스팅을 하지 않도록 라이브러리 구현 
  • 가변 인자를 활용해 개발자 편의성 개선 
  • 여러 건의 데이터를 조회할 수 있는 기능 추가 
  • 라이브러리 코드에서 중복을 제거하는 과정에 대한 설명

DAO 리팩토링 5 - SQLException을 DataAccessException으로 래핑 

자바 언어가 등장하면서 장점 중의 하나가 Exception 클래스의 도입이었다. 그런데 Checked Exception이 남용되면서 소스 코드가 지저분해지는 경향이 생기면서 최근에는 Checked Exception의 사용을 최소화하자는 방향으로 흐름이 바뀌였다. 하지만 기존 API에는 수 많은 Checked Exception이 있다. 이 Checked Exception을 그대로 사용하는 것이 아니라 UnChecked Exception(Runtime Exception)으로 래핑해서 사용하는 것이 더 깔끔한 코드를 유지하는데 도움이 된다.

  • Checked Exception과 Unchecked Exception 
  • SQLException을 Unchecked Exception으로 변환 처리

DAO 리팩토링 6 - 람다 표현식을 사용하도록 리팩토링 

자바 8에 추가된 람다 표현식은 자바 코드를 좀 더 깔끔하게 구현할 수 있도록 지원한다. 이미 수 많은 언어에서 지원하고 있는 람다 표현식이 늦게 추가된 경향이 있다. 람다 표현식은 함수형 프로그래밍에서 널리 사용되고 있는 것으로 익혀 놓으면 추후 다른 언어 기반으로 구현하는데도 도움이 될 것으로 생각한다.

  • RowMapper에 FunctionalInterface 어노테이션 설정 
  • RowMapper를 사용할 때 람다 표현식을 사용하도록 리팩토링

  • 레이블 없음