여섯 번째 수업 이모저모

  • 수업은 2017-04-20 19:00:00 +0900에 시작.
  • 오늘은 MVC 패턴을 공부하고, JDBC 라이브러리를 만들어 보도록 한다.

단상 : 삶과 프로그래밍

  • 책 소개 : 이너 게임
    • 행복하게 일하며 회사 다니는 사람에게는 필요 없는 책이라 한다.
    • 내게는 필요 없는 책인듯.

나는 행복한가?

나는 행복한 활동에 대해 두 가지 조건이 있다고 생각한다.

  1. 불행−− : 불행을 제거할 수 있어야 한다.
  2. 행복++ : 행복을 증가시켜야 한다.

나는 행복한가? 나는 행복하다. 단언할 수 있다. 적어도 글을 쓰고 있는 지금은 그렇게 생각한다. 그리고 이 행복에 프로그래밍이 적지 않게 좋은 영향을 주고 있다고도 생각한다.

  • 프로그래밍은 내 삶에 발생했던 적지 않은 불행들을 간접적으로 제거해 주었다.
    • 이제는 월급이 꼬박꼬박 나온다.
    • 이전의 다른 직업들을 가졌을 때는 삶이 너무 힘들었다.
    • 앉아서 하는 일이 하고 싶었다. -> 앉아서 프로그래밍을 한다.
  • 프로그래밍을 하면 행복한가?
    • 괴로울 때도 종종 있지만, 전체적으로 즐겁고 흥미진진한 나날이라 생각한다.
    • 회사 일 외에도 개인 프로젝트로 만들고 싶은 것들을 만들어내는 기쁨이 있다.
    • 다른 데스크 잡에 비해 엄청나게 재미있는 편이어서, 회사에서 일만 하고 있어도 시간 가는 줄 모를 정도로 푹 빠져 있는 경우가 많다.
    • 프로그래밍 공부는 많이 재미있는 편이다.

JDBC 라이브러리 구현

  • 내 구현 내용은 GitHub에 올려 두었다.
    • Pull Request도 날려 두었다.
    • 작업한 결과 마지막에 나온 UserDao.java의 내용은 아래와 같다.
public class UserDao {

    public void insert(User user) throws SQLException {
        final String sql = "INSERT INTO USERS VALUES (${userId}, ${password}, ${name}, ${email})";
        new JdbcTemplate().update(sql, user);
    }

    public void update(User user) throws SQLException {
        final String sql = "UPDATE USERS SET password = ${password}, name = ${name}, email = ${email} WHERE userId = ${userId}";
        new JdbcTemplate().update(sql, user);
    }

    public List<User> findAll() throws SQLException {
        String sql = "SELECT userid, password, name, email FROM USERS";
        return new JdbcTemplate().select(sql, User.class);
    }

    public User findByUserId(String userId) throws SQLException {
        String sql = "SELECT userId, password, name, email FROM USERS WHERE userid=${userId}";
        User user = new User(userId, null, null, null);
        return new JdbcTemplate().selectOne(sql, User.class, user);
    }
}
  • 학습용으로 짠 거라 허술한 점이 많다. 가령, 이걸 진짜로 쓰려면 Injection 방어 코드를 추가해 주어야 한다.
  • Reflection을 사용해서 객체의 get메서드 호출로 자동으로 값이 들어가도록 해 주었다.
    • Statement?를 사용하는 방식이 마음에 안 들었기 때문. 혹시라도 순서가 어긋나면 와장창 깨질 수 있다는 게 마음에 들지 않는다.
  • 재미있게 작업한 건 좋았는데, 하다보니 과잉이 좀 있었다. 오버 엔지니어링 스멜.
  • 아직까지 내게 Java는 너무 답답하고 수다스러운 언어다. 뭔가 하려면 너무 많이 써야 한다. 물론 Java6 쓰던 때와 Java8을 쓰는 지금을 감히 비교할 수는 없지만.

메모

  • 지난 수업들 중 가장 재미있는 시간이었다.
  • JDBC 라이브러리 구현은 이전에 해 보려는 마음을 먹었다가 실천하지 못했던 주제였는데, 이번 기회에 시도하게 되었다.
    • 약 2 시간 동안 느낀 점이 많았다.
    • 미진한 실천력에 대해 반성했다.
    • 보통 강좌라 하면 라이브러리 사용법을 소개하거나 하는데, 박재성 교수님의 수업은 라이브러리를 함께 만들어가는 방식이라 좀 더 깊이 있게 공부할 수 있는 것 같다.
  • 템플릿 메소드 패턴은 예전에 게임 만들 때 꽤 많이 썼었는데, 웹 개발 중에는 남이 만든 라이브러리만 가져다 쓰다 보니 쓸 일이 거의 없었던 것 같다.
  • DB는 H2를 사용했다.
$ # H2 DB 백그라운드 구동. 구동이 끝나면 웹 브라우저에서 관리 콘솔이 열린다.
$ java -jar h2-1.3.167.jar &

Links