TIL-20171102

2017.11.01 (수) ~ 2017.11.02(목) 이틀동안의 T.I.L. (Two days I Learnt)

  • JDBC 리팩토링 구현과제를 부분 완성하고, PR을 통해 코드 리뷰받다.
    • 리팩토링을 충분히 했다고 생각한 부분에 중복이 남아있었다.
    • 가변 인자(Object… objects)의 구현에 대해 학습하였다. objects가 배열의 형태로 넘어온다는 것을 알게 됐다.
    • PreparedStatement에 익숙해졌으며 @FunctionalInterface 를 통한 람다식 구현에도 부담이 없어졌다.
    • Codacy에서 한 개도 지적받지 않는 코드를 만들 수 있었다. 굳!

11월 1일 수요일에는 코드스쿼드 식구들과 오레오 같이 나눠 먹으며 친해지는 시간을 가졌다.
영상편집을 공부하고 싶었으나 영상 “처리” 를 공부하게 된 컴공 출신 Elly, 여행을 좋아하는 Koo, 애기아빠 R 등 다양한 배경의 다양한 사람들이 모여 있는 공간임을 새삼 느낄 수 있었다.

나는 어떤 역할을 해야 할까? 음…..

  • JDBC 라이브러리 구현에 좀 더 집중해 봤다.

    • 코드리뷰 내용 중 .find()와 .findAll()의 중복을 제거하는 부분이 잘 이해되지 않아 포비와 잠시 이야기를 나눴다. 방법은 의외로 간단한 것으로 .findAll() 이 가변 인자로써 조건을 받게 해 주면 그 조건에 따라 쿼리를 짜고 그렇게 반환받은 리스트에서 0번 원소를 뽑아오면 끝나는 의외로 간단한 문제였다.
    • 발상의 전환이 필요하다고 느껴진 순간이었다. 코딩을 하다가 벽에 부딪히는 느낌을 들면 초조해 하거나 책을 펴지 말고 오히려 잠시 휴식을 취하는 것도 나쁘지 않을 거라고 생각된다.
  • 구현 과제로 제시된 리팩토링 외에도 한 걸음 더 나가 보기로 했다.

    • 목표는 아무 오브젝트나 받아도 DB의 테이블 상에 매핑해줄 수 있는 범용적인 라이브러리를 만드는 것이다. SQL 쿼리 문이나 PreparedStatement 등을 전혀 받아오지 않고 객체 하나만 받으면 라이브러리가 뜯어 보면서 자동으로 적절한 DB 작업을 수행해주는 것이다.
    • 이를 구현하며 자바의 Reflection API에 대해 학습할 기회를 가졌다. 내가 구상한 방법은 객체를 받은 후 객체의 getter 메소드만 싹 파싱해 온 다음 그 메소드를 통해 필드에 담긴 정보를 받아오는 것이다.
    • 정보를 빼오는 것, SQL문을 짜는 것 까지는 쉽게 구현했지만 PreparedStatement에 적절한 순서대로 필드들을 매칭시켜 주는 과정에서 어려움을 겪고 있다.

내일은 JDBC를 끝장낸 다음, 다음 과제로 넘어가고 싶다. 또 Java의 Reflection API에 대해 더 알아가고 싶다.