“전술적인 사고란, 주어진 문제만 생각하고 가정한 문제는 무시해 버리는 것. 반면에 전략적인 사고란, 가능한 모든 것을 생각하고 이들의 가능성에 비중을 두는 것.”
개인적인 생각이지만 국내의 많은 책들이 ‘따라하기’ 식의 실습위주의 책인 반면 원서나 특히 O’REILLY 책들은 예제보다는 기술의 원리나 왜 이런 기술이 나올 수 밖에 없었던 배경을 설명하여 기초를 확실히 다지는 구성으로 되어있습니다. 어떤 방식이 좋은 건지는 제가 판단할 것은 아니지만 단순히 문제만을 해결하는 것은 한계가 있지 않을까요?
전술적인 사고에 젖어 있던 저에게 이책은 그리 만만하지 않았습니다. 크게 3부분으로 구성되어있는 이 책은 마지막 1/3은 JDBC에 대한 레퍼런스, 처음 부분은 JDBC의 상세한 설명, 두 번째 부분은 엔터프라이즈 자바 환경에 대한 전반적인 설명과 JDBC의 역할에 대한 설명으로 이루어져 있습니다. 사실 JDBC는 DB에 대한 Connection과 Transaction부분만 주의를 기울이고 정작 중요한 것은 SQL문이라고 생각했기 때문에 단순히 Connection Pooling과 Transaction을 위한 코드 몇 줄만 기억하고 있었죠. PrepareStatement는 언제 사용하고, 또 Procedure를 호출하려면 어떤 것을 작성하고 무엇이 어떻게 Return 되는구나 이런 정도 였죠. 이것만 알아도 전혀 문제가 없었기 때문에 욕심이 없었죠. 전 이책 보기 전에는 executeUpdate()하면 반영된 행수가 반환되는지 몰랐거든요.. -_-.. 보통은 몇 행이 Update 되는가가 중요하기 보다는 성공했느냐가 더 중요하기 때문이죠..
이 책은 저같이 아무런 생각 없이 JDBC를 사용했던 분들이 보시면 좋을 듯한 책입니다. 사실 분산 애플리케이션 아키텍처나 분산 컴포넌트 모델, 퍼시스턴스과 같은 전략적인 내용들은 까다롭긴 하지만 반 이상의 내용(JDBC의 소개, Datasource, Polling, 객체 직렬화, 자바 빈즈)들은 쉽게 이해하실 수 있습니다. 조금 마음에 안 드는 것은 상세하고 쉬운 내용에서 추상적이고 넓은 곳으로 바로 들어가다 보니 적응이 안되더군요. 약간의 RMI, JNDI, 디자인 패턴등 분산 시스템에 관한 용어나 개념에 익숙해야 합니다. 레퍼런스 부분이야 다른 오라일리 책과 마찬가지로 자세하게 설명하고 있습니다.
한가지 이책의 내용과 관계 없는 특징이라면 저자 조지 리스가 철학 학위를 받았다는 점입니다. 각 챕터를 시작할 때 마다 단순히 철학자의 어구로 시작하는 것 같이 보이지만 사실 해당 챕터의 내용과 일맥상통하는 글이어서 기억에 남더군요.
분산 애플리케이션 아케텍처를 시작하는 철학자의 어구 입니다.
‘ 원래 모든 사물은 여러 가지의 가능한 상태들로 이루어진 공간 속에 존재한다. 이 공간을 텅 빈 것으로 상상할 수도 있으나 이런 공간 없이는 사물을 상상할 수 없다.’
– 루트비히 비트겐슈타인(논리실증주의)
예전에 저는 이 책이 너무 많은 것을 담으려 해서, 정작 JDBC에 관한 내용은 부족하다고
평한 적이 있습니다. 요즘 프로젝트 때문에 이 책을 중간중간에 보고 있는 제게는 제 평
이 옳지 않았음을 절실히 느끼고 있습니다.
다시 평가를 내리자면, 이 책은 "JDBC"에 대한 가장 풍부한 레퍼런스라고 말하고 싶습니다.
기존 JDBC 버전과 다른 점과 특징을 잘 설명해 놓았고, 특히 JDBC만을 설명하는 것은
부족한 것을 알고 있는 저자는 여러 예제를 들어, JDBC를 잘 이해할 수 있도록 구성해
놓았습니다.
단순히 JDBC를 설명하는 것에서 그치는 것을 떠나서, 데이터베이스 기반 소프트웨어 개발
에 필요한 아키텍쳐부터, 데이터베이스 관련된 사항을 하나하나 다루고 있어서,
라이브러리 익히는 책이 아닌, 프로그래밍을 설계하는 데 도움을 주는 책 같습니다.
당장 공부하는 데는 산만해 보이겠지만, 실제 프로젝트에서 써먹을 때는 왜 이렇게 구성
되어 있고, 도움을 많이 준다는 것을 느낄 수 있을 것 같습니다.
단순히 일부분만 보고, 평가를 내린 것이 좀 실수같아서 쑥스럽네요.
이 책을 처음보고 생긴 의문은 제목에 끼워져 있는 ‘엔터프라이즈’라는 단어의 정체였다. 원서의 제목은 분명히 ‘Database Programming with JDBC and JAVA’인데... 난데없이 튀어나온 ‘엔터프라이즈’는 과연 무엇일까. 하지만 책을 다 읽고난 지금 왜 번역서의 제목이 ‘엔터프라이즈 자바 데이터베이스 프로그래밍’인지를 알 수 있을 것 같다.
그렇다. 이 책은 웹 게시판을 작성할 때나 사용되는 단순한 JDBC 사용법이나 SQL문 등에 치우져 있지 않다. 이 책의 전체적인 무게중심은 오히려 엔터프라이즈에 있다. 즉, 단순히 자바의 데이터베이스 접근 API로써 JDBC를 설명하는 것이 아니라 엔터프라이즈 환경에서 어떻게 JDBC를 이용해야 할지를 설명하고 있다.
또한 이 책에서는 JDBC 뿐만 아니라, 자바의 엔터프라이즈 관련 내용을 JDBC와 연관지어 설명하고 있다. 자바의 엔터프라이즈 API인 JNDI, RMI, EJB 등의 개념을 다루고 있으며, 분산 애플리케이션 아키텍쳐와 분산 컴포넌트 모델, 퍼시스턴스 등과 같은 엔터프라이즈 환경의 일반적인 이슈들에 대해서도 설명하고 있다.
이 책은 자바와 데이터베이스를 어느 정도 다루어본 경험이 있는 독자를 대상으로 한다. 즉, 자바와 관계형 데이터베이스 및 SQL에 대해 최소한의 지식을 갖춘 독자라면 이 책을 문제없이 읽을 수 있을 것이다.
이 책은 총 3부로 구성되어 있으며 각 장에서 다루는 내용은 다음과 같다.
1부 JDBC API
* 1장 엔터프라이즈 자바 – 1장에서는 엔터프라이즈의 일반적인 개념과 엔터프라이즈 개발 도구로써 자바를 설명하고 있다.
* 2장 관계형 데이터베이스와 SQL – 2장은 제목 그대로 관계형 데이터베이스와 SQL을 설명하고 있다. 2장의 내용은 그리 충실하지 못한 편인데 이는 저자가 주 독자층을 데이터베이스에 어느 정도 지식이 있는 개발자로 가정하고 있기 때문이다.
* 3장 JDBC 소개 – 3장에서는 JDBC의 개념과 일반적인 JDBC 사용법에 대해 설명한다.
* 4장 고급 JDBC – 4장에서는 프리페어드 SQL, 배치처리, 메타 데이터 등과 같이 JDBC의 고급 사용에 대한 주제를 다룬다.
* 5장 JDBC 선택 패키지 – 5장은 JDBC 2.0의 선택 패키지를 설명한다.
2부 응용 JDBC
* 6장 다른 엔터프라이즈 API – 6장에서는 JNDI, RMI, EJB 등과 같은 자바의 엔터프라이즈 API를 설명한다.
* 7장 분산 애플리케이션 아키텍쳐 – 7장에서는 엔터프라이즈 환경의 아키텍쳐와 디자인 패턴에 대해 설명한다.
* 8장 분산 컴포넌트 모델 – 8장에서는 보안, 트랜잭션, 룩업과 검색 등의 분산 컴포넌트 모델의 일반적인 이슈들을 예제와 함께 설명하고 있다.
* 9장 퍼시스턴스 – 9장에서는 객체 퍼시스턴스의 개념을 예제를 통해 설명하고 있으며, JDBC 기반의 퍼시스턴스 패키지의 구현을 설명한다.
* 10장 사용자 인터페이스 – 10장에서는 자바로 작성한 애플리케이션에서 인터페이스로 사용되는 스윙의 여러가지 이슈에 대해 설명한다.
3부 레퍼런스
* 11장 JDBC 레퍼런스 – java.sql 패키지의 레퍼런스로 구성된다.
* 12장 JDBC 선택 패키지 레퍼런스 – javax.sql 패키지의 레퍼런스로 구성된다.
책의 여기저기서 번역서 특유의 어색한 어법이 보이지 않는 것은 아니지만 이 정도라면 번역은 나름대로 깔끔한 수준이라고 할 수 있을 것이다. 그리고 편집 상태 역시 매우 양호하며 특히 소스코드와 그림이 잘 정리되어 있어 눈에 쉽게 들어온다.
이 책을 읽으면서 흥미로웠던 것은 저자인 조지 리스의 이력이다. 세계 최초의 JDBC 드라이버인 mSQL-JDBC를 개발하기도 했던 조지 리스는 철학 학위를 갖고 있기도 하다. 저자는 이 책에서 각 장을 주요 철학자의 인용으로 시작하고 있으며, 책의 중간중간에서도 철학 문구를 인용하고 있다.
이제 엔터프라이즈 환경에서 자바의 가능성을 의심하는 사람은 아무도 없다. 자바는 엔터프라이즈 플랫폼인 J2EE를 앞세워 엔터프라이즈 환경에서 입지를 굳혀나가고 있으며, JDBC는 J2EE 플랫폼의 한 축을 이루고 있다. 이 책은 JDBC 뿐만 아니라 엔터프라이즈 환경에서의 자바에 대한 다양한 이슈들을 다루고 있으며, 이는 이 책을 읽는 독자들에게 큰 힘이 될 것이라 확신한다.
- jstorm(www.jstorm.pe.kr) 2기 전부현(kanaloa@orgio.net)