Next JWP Study 06
2017.04.22
study jwp
JDBC 라이브러리 구현
여섯 번째 수업 이모저모
- 수업은
2017-04-20 19:00:00 +0900
에 시작. - 오늘은 MVC 패턴을 공부하고, JDBC 라이브러리를 만들어 보도록 한다.
단상 : 삶과 프로그래밍
- 책 소개 : 이너 게임
- 행복하게 일하며 회사 다니는 사람에게는 필요 없는 책이라 한다.
- 내게는 필요 없는 책인듯.
나는 행복한가?
나는 행복한 활동에 대해 두 가지 조건이 있다고 생각한다.
- 불행−− : 불행을 제거할 수 있어야 한다.
- 행복++ : 행복을 증가시켜야 한다.
나는 행복한가? 나는 행복하다. 단언할 수 있다. 적어도 글을 쓰고 있는 지금은 그렇게 생각한다. 그리고 이 행복에 프로그래밍이 적지 않게 좋은 영향을 주고 있다고도 생각한다.
- 프로그래밍은 내 삶에 발생했던 적지 않은 불행들을 간접적으로 제거해 주었다.
- 이제는 월급이 꼬박꼬박 나온다.
- 이전의 다른 직업들을 가졌을 때는 삶이 너무 힘들었다.
- 앉아서 하는 일이 하고 싶었다. -> 앉아서 프로그래밍을 한다.
- 프로그래밍을 하면 행복한가?
- 괴로울 때도 종종 있지만, 전체적으로 즐겁고 흥미진진한 나날이라 생각한다.
- 회사 일 외에도 개인 프로젝트로 만들고 싶은 것들을 만들어내는 기쁨이 있다.
- 다른 데스크 잡에 비해 엄청나게 재미있는 편이어서, 회사에서 일만 하고 있어도 시간 가는 줄 모를 정도로 푹 빠져 있는 경우가 많다.
- 프로그래밍 공부는 많이 재미있는 편이다.
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 &