[DAO 리팩토링 실습 문서](7.2 DAO 리팩토링 실습.pdf)
- https://youtu.be/ylrMBeakVnk 동영상은 DAO 리팩토링 1단계로 DAO 중복 코드에 대한 이슈 제기, 라이브러리 코드와 개발자가 구현해야 하는 코드 분리, abstract 키워드를 활용해 추상 클래스 구현, INSERT, UPDATE, DELETE 문에 대한 중복 제거 과정을 다룬다.
- https://youtu.be/zfXAZkqPH44 동영상은 SELECT 쿼리에 대한 중복 코드 제거, getConnection() 메서드 중복 제거 및 테스트 코드 수정, 템플릿 메소드 패턴 적용 과정을 다룬다.
- https://youtu.be/yEHUB97B62I 동영상은 템플릿 메소드 패턴을 활용해 JdbcTemplate과 SelectJdbcTemplate 통합, 템플릿 메소드 패턴을 활용할 때의 문제점, 각 메소드를 콜백 인터페이스로 분리해 JdbcTemplate과 SelectJdbcTemplate 통합하는 과정을 다룬다.
- https://youtu.be/nkepkHJi7e8 동영상은 자바 제너릭을 활용해 캐스팅을 하지 않도록 라이브러리 구현, 가변 인자를 활용해 개발자 편의성 개선, 여러 건의 데이터를 조회할 수 있는 기능 추가, 라이브러리 코드에서 중복을 제거하는 과정에 대한 설명한다.
- https://youtu.be/lFTyw7Uipyo 동영상은 컴파일타임 Exception, 런타임 Exception 차이, SQLException을 런타임 익셉션으로 변환해서 처리하는 과정을 다룬다.
- https://youtu.be/0ax9jxfW9x4 동영상은 자바 8에서 추가한 람다를 적용하기 RowMapper에 FunctionalInterface 어노테이션 설정, RowMapper를 사용할 때 람도 표현식을 사용하도록 리팩토링하는 과정을 다룬다.
위 동영상을 봤으면 이에 대한 학습을 멈추지 말고 UserDao를 동영상이나 책을 참고하지 말고 리팩토링하는 연습을 해볼 것을 추천한다. 동영상이나 책을 통해 학습했기 때문에 쉽게 리팩토링할 수 있겠지라는 생각을 할 수 있다. 하지만 막상 해보면 막히는 부분이 많을 것이다. 이 막히는 부분을 혼자 힘으로 해결해 나가는 과정에서 깨달음을 얻을 수 있고, 한 단계 성장할 수 있다.
이 책을 쓰고 있는 현 시점에 가장 많이 사용되고 있는 데이터베이스는 관계형 데이터베이스(RDBMS)이다. 따라서 관계형 데이터베이스의 SQL을 기본으로 반드시 학습해야 한다. SQL에 대한 기본적인 학습이 끝났다면 다음 단계로 학습할 내용은 성능을 고려한 설계 및 인덱스 활용에 대한 학습이다. 이 내용과 관련해 깊이 있게 학습하지는 못하더라도 ER 다이어그램, 인덱스, 정규화, 트랜잭션과 같이 데이터베이스의 핵심 내용은 학습해야 한다.
이와 같은 기본적인 내용은 초보 개발자를 위한 데이터베이스 책에서 대부분 다루고 있다. 1장에서 추천한 SQL 첫걸음 : 하루 30분 36강으로 배우는 완전 초보의 SQL 따라잡기(아사이 아츠시 저/박준용 역, 한빛미디어/2015년) 책에도 최소한의 내용은 포함하고 있다.
데이터베이스에 대한 기본적인 내용 학습이 끝났으면 다음 단계는 현재 프로젝트에서 사용하고 있는 데이터베이스에 대해 더 깊이 있게 학습하면 된다. 최근 급격한 데이터의 증가로 인해 무료로 사용할 수 있는 MySQL 데이터베이스에 대한 인기가 높아지고 있다. MySQL에 대해 더 깊이 있게 학습하고 싶다면 Real MySQL : 개발자와 DBA를 위한(이성욱 저, 위키북스/2012년) 책을 추천한다.
2010년에 접어들면서 관계형 데이터베이스 외에 카산드라, 카우치DB, 몽고DB, 레디스와 같은 수 많은 다양한 형태의 데이터베이스가 등장했다. 이 같은 데이터베이스를 통틀어 NoSQL이라고 한다. NoSQL은 점점 더 다양한 분야에 활용되고 있기 때문에 개발자가 반드시 학습해야할 주제가 되었다. 두 번째 양파 껍질에 해당하는 지금 단계는 어떤 NoSQL이 존재하고 각 NoSQL의 특징이 무엇인지 이해하는 것만으로도 충분한다. NoSQL : 빅 데이터 세상으로 떠나는 간결한 안내서(프라모드 사달게이,마틴 파울러 공저/윤성준 역, 인사이트/2013년) 책은 다양한 NoSQL에 대한 특징을 살펴보기 위한 안내서가 될 것이다. 일단 이 정도 수준으로 개념만 잡고 있다 현재 진행하는 프로젝트에서 사용하는 NoSQL이 있다면 추가 학습할 것을 추천한다.
데이터베이스 또한 백엔드 개발자가 지속적으로 학습해야할 주제 중의 하나이다. 과거에는 애플리케이션 개발에 관계형 데이터베이스 하나만 활용해도 충분했다면 최근의 경향은 관계형 데이터베이스와 NoSQL을 같이 사용하는 경우가 많기 때문에 백엔드 개발자가 데이터베이스 선정, 설계에 참여하는 경우도 과거보다 많아지고 있다.
개발 경력이 1년도 되지 않은 상태에서 우연히 디자인 패턴을 접하게 되었다. 그 당시 처음 접한 책이 디자인 패턴에서 가장 유명한 책으로 알려져 있는 GoF의 디자인 패턴 : 재사용성을 지닌 객체지향 소프트웨어의 핵심요소(에릭 감마 저/김정아 역, 프로텍미디어/2015년) 책이었다. 이 책은 1994년에 출간된 책으로 개발 경험이 많은 4명의 개발자가 개발 과정에서 자주 나타나는 패턴을 정리한 책이다. 번역서로 책을 읽었지만 솔직히 무슨 말을 하는지 거의 이해하지 못했다. 초보 개발자가 보기에는 정말 어려운 책이다.
개인적으로 디자인 패턴은 개발 경험을 쌓은 후 학습해도 괜찮다고 생각한다. 먼저 자신의 코드에서 리팩토링할 부분을 찾아 작은 부분이라도 리팩토링을 통해 소스 코드를 개선하는 경험이 우선이다. 이런 경험을 반복하다보면 일정한 패턴을 스스로 찾는 경험도 할 수 있다. 이 순간의 짜릿함은 그 무엇과도 바꿀 수 없을 것이다.
그래도 디자인 패턴을 학습하고 싶다면 처음 책은 Head First Design Patterns : 스토리가 있는 패턴 학습법(에릭 프리먼 저 / 서환수 역, 한빛미디어/2005) 책을 추천한다. 애플리케이션 개발에서 자주 사용하고 디자인 패턴을 다양한 그림을 통해 설명하고 있다. 개발 경험이 많지 않은 상태에서 디자인 패턴을 접하면 좌절하는 경우가 많은데 스토리와 그림을 통해 설명하기 때문에 나름 쉽게 접근할 수 있다. 이 책을 읽으면 개발 단계에 바로 적용할 수 있겠다는 생각이 들지만 막상 적용하는 것은 쉽지 않다. 아는 것과 적용하는 것은 완전히 다르기 때문이다. 적용하는 능력을 키우려면 설계에 대한 많은 고민을 통해 경험을 쌓는 수 밖에 없다.
만약 소스 코드를 통해 디자인 패턴을 학습하고 싶다면 실전 코드로 배우는 실용주의 디자인 패턴(Allen Holub 저/송치형 역, 지앤선/2006) 책을 추천한다. 좋은 소스 코드를 읽을 수도 있고, 소스 코드를 통해 디자인 패턴의 의도를 파악하기 위한 목적으로도 좋다.