HOME > 상세정보

상세정보

마이바티스 프로그래밍 : JDBC를 대체하는 쉽고 빠른 자바 데이터베이스 프레임워크 (9회 대출)

자료유형
단행본
개인저자
이동국
서명 / 저자사항
마이바티스 프로그래밍 : JDBC를 대체하는 쉽고 빠른 자바 데이터베이스 프레임워크 / 이동국 지음
발행사항
의왕 :   에이콘,   2013  
형태사항
383 p. : 삽화 ; 26 cm
총서사항
에이콘 오픈소스 프로그래밍 시리즈 ;21
ISBN
9788960774216 9788960771031 (set)
일반주기
부록: A. 아이바티스에서 마이바티스로 변환, B. 마이바티스 편집기, C. 흔히 발생할 수 있는 에러 유형  
색인수록  
000 00871camcc2200265 c 4500
001 000045756806
005 20130708092755
007 ta
008 130705s2013 ggka 001c kor
020 ▼a 9788960774216 ▼g 94560
020 1 ▼a 9788960771031 (set)
035 ▼a (KERIS)BIB000013165066
040 ▼a 222001 ▼c 222001 ▼d 211009
082 0 4 ▼a 005.133 ▼2 23
085 ▼a 005.133 ▼2 DDCK
090 ▼a 005.133 ▼b J41 2013z1
100 1 ▼a 이동국 ▼0 AUTH(211009)36786
245 1 0 ▼a 마이바티스 프로그래밍 : ▼b JDBC를 대체하는 쉽고 빠른 자바 데이터베이스 프레임워크 / ▼d 이동국 지음
260 ▼a 의왕 : ▼b 에이콘, ▼c 2013
300 ▼a 383 p. : ▼b 삽화 ; ▼c 26 cm
440 0 0 ▼a 에이콘 오픈소스 프로그래밍 시리즈 ; ▼v 21
500 ▼a 부록: A. 아이바티스에서 마이바티스로 변환, B. 마이바티스 편집기, C. 흔히 발생할 수 있는 에러 유형
500 ▼a 색인수록
945 ▼a KLPA

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 중앙도서관/제2자료실(3층)/ 청구기호 005.133 J41 2013z1 등록번호 111697903 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.133 J41 2013z1 등록번호 121225947 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 중앙도서관/제2자료실(3층)/ 청구기호 005.133 J41 2013z1 등록번호 111697903 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.133 J41 2013z1 등록번호 121225947 도서상태 대출가능 반납예정일 예약 서비스 B M

컨텐츠정보

책소개

JDBC 개발자나 아이바티스 개발자가 마이바티스를 손쉽게 이용할 수 있도록 차근차근 설명하는 세계 최초의 마이바티스 가이드. 마이바티스(MyBatis)는 JDBC를 대체하는 자바 퍼시스턴스 프레임워크로 국내에서 가장 인기 있는 퍼시스턴스 프레임워크인 아이바티스(iBatis)가 새로이 업그레이드된 제품이다. 마이바티스는 아이바티스가 가진 간결함에, 아이바티스에 없던 다양한 기능과 개선을 더했다.

이 책은 JDBC를 사용하는 개발자가 쉽게 마이바티스를 사용할 수 있도록 차근차근 설명한다. 그리고 기존에 아이바티스를 사용하던 개발자에게는 마이바티스와의 차이점을 설명해서 쉽게 전환할 수 있도록 지원한다. 따라서 데이터베이스를 다루는 퍼시스턴스 프레임워크를 사용한 적 없는 개발자는 데이터베이스 연동작업을 매우 쉽게 할 수 있으며, 아이바티스를 사용해온 개발자는 처음 아이바티스를 사용할 때 느꼈던 그 간결함이 새로운 느낌으로 다가올 것이다. 이 책에서 다루는 마이바티스 버전은 3.2.1이고 스프링 연동모듈은 1.2.0이다.

★ 이 책의 구성 ★

프레임워크를 비롯한 대부분의 기술을 습득할 때는 한 번에 모든 내용을 이해하기는 어렵다. 그렇기 때문에 전체를 구성할 수 있는 작은 단위의 주제를 나눠서 각각의 주제별로 이해하게 해야 한다. 각 주제에 대해 일정 수준 이상을 이해하고 나서 전체를 이해하게 하는 게 효과적인 학습 방법이다. 각 주제는 별도의 장으로 나눴으며 순서대로 읽도록 구성했다. 마이바티스가 처음인 독자는 1장부터 순서대로 보면 되고, 마이바티스를 사용해봤거나 조금 알고 있는 독자는 레퍼런스 형태로 필요한 내용을 찾아서 봐도 무방하다.

각 장은 다음과 같이 구성돼 있다.

1장. JDBC 코드의 대안 마이바티스: 마이바티스는 2003년 아이바티스 데이터베이스 레이어로 처음 릴리스(출시)했다. 직후 SQLMaps와 DAO 패키지를 함께 릴리스했다. 국내에는 많은 개발자들이 아이바티스 또는 SQLMaps라는 이름으로 알고 있다. 최근에는 아파치 프로젝트에서 구글 코드로 호스팅을 옮기고, 코드를 새로 작성하면서 마이바티스로 이름을 바꿔 릴리스하고 있다. 1장에서는 데이터베이스 프로그래밍을 할 때 JDBC API를 사용하는 코드에서 불편한 점을 하나씩 살펴보면서 아이바티스와 마이바티스가 만들어진 배경을 간단히 살펴본다. 2.x 버전의 아이바티스와 3.x 버전의 마이바티스에 대해 간단히 비교해보는 것으로 1장을 마무리한다.

2장. 마이바티스 시작: 책 전반에 사용되는 코드를 실제로 돌려볼 수 있도록 개발 환경을 설정한다. 그리고 JDBC 코드를 살펴본다. JDBC에서 데이터베이스 연결을 가져오는 방법을 살펴보고, 마이바티스에서 데이터베이스 연결을 가져오기 위해 설정하는 방법과 마이바티스 API를 살펴본다. 3장에서 데이터를 조회하고 입력, 수정, 삭제하는 방법을 살펴보기에 앞서, 사용할 데이터의 구조를 데이터베이스의 ERD와 자바 모델 클래스를 보면서 파악한다.

3장. 마이바티스 CRUD: 데이터를 조회하고 입력, 수정, 삭제하는 실제 코드를 살펴본다. 먼저 JDBC 코드를 살펴보고 마아비티스 코드로 변환하는 과정을 거친다. 마이바티스 코드를 실행해서 로그를 보면서 마이바티스가 내부에서 JDBC를 활용하는 점도 함께 살펴본다.

4장. 마이바티스 웹 애플리케이션과 활용: 자바에서 데이터베이스를 사용하는 애플리케이션은 대부분 웹 애플리케이션 형태로 작성한다. 2장과 3장에서 간단한 설정과 SQL을 사용했다면 4장에서는 실무에서 사용하는 복잡한 설정과 SQL을 사용한다. 데이터베이스 연결풀과 조인을 사용한 예제를 살펴본다. 마이바티스의 가장 중요한 기능 중 하나인 조인 SQL의 결과 매핑을 살펴본다.

5장. 마이바티스와 스프링 웹 애플리케이션 연동: 스프링은 자바 개발자가 가장 많이 사용하는 프레임워크로서, 전자정부 표준 프레임워크에도 선정돼 있다. 5장에서는 마이바티스의 스프링 연동 모듈을 사용해서 마이바티스와 스프링을 함께 사용하는 방법을 다룬다. 마이바티스와 스프링 연동은 어렵지 않으며 설정 방법과 특이 사항을 주로 다룬다.

6장. 마이바티스 설정 파일: 마이바티스는 다양한 관계형 데이터베이스를 지원하기 위해 많은 옵션을 제공한다. 5장은 마이바티스의 다양한 설정을 다룬다. 보편적으로 사용할 마이바티스 설정은 대부분 4장까지 다룬다. 다만, 마이바티스는 데이터베이스가 제공하는 JDBC 드라이버의 기능에 의존하기 때문에 JDBC 드라이버에 크게 의존하는 설정은 설명에서 제외한다.

7장. 매퍼 XML과 매퍼 인터페이스: 마이바티스는 SQL을 자바 코드에 명시하는 JDBC와 달리 SQL을 코드에서 분리해서 XML에 정의할 수 있다. XML에 정의하는 방법 외에도 자바 코드의 애노테이션에도 명시할 수 있다. SQL을 자바 코드가 아닌 다른 곳에 명시하기 때문에 SQL에서 사용하는 파라미터와 조회 결과를 자바 객체로 변환하는 기능을 제공한다. JDBC에서 객체에 값을 설정하기 위해 모델 클래스의 getter/setter 메소드를 호출하는 번거로움을 덜기 위해 자동으로 getter/setter 메소드를 호출해서 값을 설정해주기도 하고, 별도로 매핑 규칙을 정의할 수도 있다. 7장에서는 파라미터를 매핑하거나 결과 데이터를 자바의 다양한 타입의 객체에 설정하는 방법을 살펴본다.

8장. 동적 SQL: 자바 코드를 사용해서 동적 SQL을 만드는 작업은 빈번하다. 하지만 동적 SQL 처리를 위해 사용하는 분기 처리는 코드의 가독성을 떨어뜨리고 에러 발생 시 원인을 찾기가 어렵다. 마이바티스는 SQL을 별도의 XML이나 애노테이션에 정의하기 때문에 기존 자바 코드를 사용해서 동적 SQL을 만드는 작업과 다를 수밖에 없다. XML에서 동적 SQL을 처리하기 위해 제공하는 엘리먼트를 살펴본다. 그리고 애노테이션에서 동적 SQL을 위해 구문 빌더를 사용하는 방법을 살펴본다.

9장. 마이바티스 제너레이터: 데이터베이스 프로그래밍을 하다 보면 대부분 공통적으로 처리하는 작업이 있다. 테이블에 대응하는 모델 클래스를 만들거나 테이블별로 SQL을 만드는 작업이다. 물론 조인을 적용한 SQL은 데이터에 대한 요구 사항을 정의해야 하기 때문에 자동으로 만들어주는 것은 어렵다. 하지만 테이블별로 모델 클래스와 조회, 입력, 수정, 삭제를 처리하는 SQL은 형태가 대부분 일정한 규칙을 가진다. 마이바티스는 이러한 작업을 자동으로 처리하는 제너레이터를 제공한다. 9장은 제너테이터의 설치 방법과 사용법, 그리고 설정 파일에 대한 세부적인 내용을 살펴본다.

부록 A. 아이바티스에서 마이바티스로 전환: 아이바티스와 마이바티스는 개발자가 동일하고, 마이바티스는 아이바티스의 특징을 대부분 그대로 가져왔다. 아이바티스와 마이바티스는 어느 정도 차이점이 있다. 마이바티스는 아이바티스를 사용해서 작성한 코드를 마이바티스로 전환하기 위해 도구를 제공한다. 그 도구의 사용법과 도구의 제약 사항을 다룬다.

부록 B. 마이바티스 편집기: 마이바티스의 매퍼 XML에 정의한 SQL을 좀더 보기 쉽게 이클립스의 마이바티스 편집기 플러그인이 있다. 마이바티스 편집기의 설치 방법과 사용 방법을 살펴본다.

부록 C. 흔히 발생할 수 있는 에러 유형: 마지막으로 마이바티스를 사용할 때 흔히 볼 수 있는 에러 유형을 정리했다.


★ 이 책에서 다루는 내용 ★

■ JDBC 개발자와 아이바티스 개발자를 위한 단계별 마이바티스 설명
■ 데이터 CRUD를 처리하는 마이바티스 코드와 결과물
■ 스프링 연동 모듈을 통한 손쉬운 스프링 연동
■ 다양해진 매핑 구문 정의
■ 아이바티스에 비해 훨씬 쉬워진 동적 SQL 처리
■ 소스 자동 생성기인 마이바티스 제너레이터
■ 자바 애플리케이션, 자바 웹, 스프링 연동 웹까지 마이바티스와 관련한 포괄적 설명


★ 이 책의 특징 ★

■ 아이바티스, 마이바티스 공식 한글문서와 『iBatis 인 액션』의 역자가 쓴 세계 최초의 마이바티스 입문서
■ JDBC 코드에서 마이바티스 코드로 자연스럽게 전환하는 과정을 이해하기 쉽도록 설명
■ 개발 효율성을 높일 수 있도록 마이바티스뿐 아니라 마이바티스 제너레이터도 학습
■ 개인 위키(http://ldg.pe.kr/)와 페이스북 페이지(http://facebook.com/mybatis)를 통한 업데이트와 독자 지원

★ 추천의 글 ★

엔터프라이즈 개발에 사용되는 자바 오픈소스 프레임워크 프로젝트는 대부분 현장에서 일하는 개발자들이 자신의 필요를 위해 만들어서 실전에 적용하고, 다듬어 온 것을 다른 개발자들을 위해서 공개하면서 시작된 것입니다. 공개된 프레임워크는 이에 매력을 느낀 많은 개발자들의 협력을 통해 발전합니다. 하나의 프레임워크가 만들어지고 다양한 환경과 조건에서 사용돼 검증되고 발전하는 데는 오랜 시간과 많은 참여가 필요합니다. 여러 개발자들의 수고 덕분에 점점 더 편하고 효과적인 개발이 가능해지고 있습니다. JDBC 프로그래밍의 번거로움 때문에 좀더 쉬운 SQL/DB 프로그래밍을 고민해봤던 자바 개발자들에게 마이바티스와 같이 성숙한 SQL 매핑 프레임워크가 존재한다는 것은 고마운 일입니다. 오픈소스 프레임워크가 효과적으로 사용되려면 프레임워크 개발 못지않게 사용 방법을 배울 수 있는 문서와 자료도 중요합니다.
이동국 님은 오래 전부터 아이바티스, 마이바티스 공식 레퍼런스와 관련 서적의 번역에 많은 기여를 해 온 분입니다. 일찍이 아이바티스, 마이바티스에 매력을 느끼고 한국 자바 개발자들에게 보급하려고 힘써온 이동국 님의 다양한 프로젝트 적용 경험이 친절한 설명과 함께 책으로 엮여 나온다니 반갑습니다.
- 이일민 / 이프릴 대표, 『토비의 스프링 3』 & 『토비의 스프링 3.1』 저자

아이바티스와 마이바티스는 정말 많이 사용되고 있는 프레임워크인데, 국내에 아이바티스에 대한 책이 단 한 권, 마이바티스는 한 권도 없는 것이 불편한 진실이었다. 이 책은 JDBC에서 마이바티스로 가는 과정을 담고 있어 왜 마이바티스를 사용하면 좋은지, 어떻게 사용하는지에 대해 초보자들에게 좋은 지침서가 될 것이다. 그리고 아이바티스를 이미 잘 알고 있는 분들은 이 책에서 아이바티스 코드와 마이바티스 코드를 비교 설명하는 내용을 보면 좀더 빠르게 익힐 수 있다. 뿐만 아니라 아이바티스에서 향상된 마이바티스만의 기능들도 있으니 아이바티스에서 그만 벗어나길 조심스럽게 권고해본다. 이 책을 읽으면서 알게 된 놀라운 사실은 『iBatis 인 액션』, 아이바티스 사용자 가이드, 마이바티스 3 사용자 가이드, 그리고 마이바티스 공식 사이트에 있는 한글로 된 레퍼런스 페이지 모두가 동국 님의 손길을 거쳐 간 작업물이란 점이다. 아이바티스부터 마이바티스까지 A to Z를 숙지하고 계신 분이 쓰신 책이니 만큼 좀더 깊이 있는 지식을 얻어 가길 바란다.
- 최윤석 / 봄싹

아이바티스는 참 오래된 기술입니다. 2010년에 아파치(Apache)에서 은퇴한 기술을 신규 프로젝트에 계속 사용하는 것은 프로젝트 유지 보수에 도움이 되지 않을 것입니다. 그렇다고 해서 좋다는 최신 기술을 프로젝트에 마구 가져다 쓰는 것 또한 프로젝트 참가자들의 기술 피로도를 높일 수 있습니다. 프로젝트 참여자는 기술적 어려움보다 비즈니스 문제에 집중할 수 있게 하는 것이 프로젝트 성공에 더 도움이 될 것입니다. 이런 면에서 마이바티스는 추천할 만한 퍼시스턴트 기술로 손꼽힙니다. 아이바티스에서 사용하던 SQL 매퍼(Mapper) 개념을 사용하므로 기존 기술을 사용하는 개발자들의 기술적 피로도가 상대적으로 낮습니다. 커미터들도 지속적으로 활동하고 버그 패치 및 개선 기능들도 계속 반영되고 있어 기술의 유지 보수에 대한 걱정도 크지 않습니다. 이 책은 기존 아이바티스에 익숙한 사람들을 위한 가이드와 새로운 기능에 대한 내용을 고루 담았습니다. 프레임워크 전도사로 활동했던 저자의 노하우가 독자들에게 잘 전달되기를 바랍니다.
- 임구근 / NHN 비즈니스 플랫폼 차장

이동국 님의 마이바티스 책이 나온다고 하니 정말 반갑습니다. 작년 초부터 마이바티스 책이 나오면 좋겠다고 생각했는데, 그 사이에 시간은 조금 지났지만 그래도 여전히 세계 최초 마이바티스 책입니다. 그동안 아이바티스를 써오신 분들이라면 이 책으로 개발이 중단된 프레임워크에서 가급적 손을 빨리 떼시고 새롭게 활발히 개발 중인 마이바티스와 친해지기 바랍니다. 그리고 자바로 아이바티스 같은 SQL 매퍼에 처음 입문하려는 분들도 이 책으로 시작하길 권장합니다. 이 책은 마이바티스 레퍼런스와는 달리, 마이바티스를 사용하는 프로젝트 설정 방법부터 시작해 마이바티스의 모든 기능을 다루는 책입니다. 또한 부록으로 다루는 아이바티스에서 마이바티스로 전환하는 방법이나, 마이바티스 편집기 사용 방법, 자주 볼 수 있는 에러 등 유용한 팁들도 특히 눈에 띕니다. 이 책 한 권으로 충분히 입문자와 기존 개발자에게 필요한 내용을 전달할 수 있을 것으로 보입니다.
- 백기선 / NHN 비즈니스 플랫폼 과장, 『쉽게 따라하는 자바 웹 개발』 저자, 『스프링 3 레시피』 역자

일반적인 웹 애플리케이션을 개발하는 데 데이터베이스를 다루는 것은 매우 기본적이고, 빈번하며 중요합니다. 애플리케이션의 복잡도가 꾸준히 증가하는 요즘 이를 다루는 것 또한 어렵고 복잡하며 번거로워지고 있어 더욱 그렇습니다. 많은 프레임워크들이 이 문제를 해결하고자 노력했으나 적용이 어렵고, 학습 비용이 높거나 안정성이 떨어지는 경우가 많아 실제 학습하거나 적용하는 데 어려움이 많았습니다. 이 어려운 숙제를 해결하기 위해 아이바티스는 태어났습니다. 쉽고 편리하게 사용할 수 있는 아이바티스는 개발자들에게 축복과 같았습니다. 배우기도 쉽고 적용하기 어렵지 않아 국내외 많은 서비스와 기업에서 써왔습니다. 바로 그 아이바티스가 마이바티스라는 이름으로 돌아왔습니다. 더 쉽고 더 직관적이고 강력해진 모습으로 돌아왔습니다. 『iBatis 인 액션』을 국내에 소개했던 아이바티스 전도사인 저자의 친절한 설명을 통해 마이바티스를 더 쉽고 깊이 있게 만나보시기 바랍니다. 현업에서 같은 고민과 경험을 해 온 저자의 이야기를 통해 적은 노력으로 애플리케이션을 좀더 효율적으로 개발하고 건강하게 관리하는 기쁨을 느껴보시기를 바랍니다.
- 조영오 / 티켓몬스터 팀장

대한민국 소프트웨어 개발 환경은 점점 더 갈라파고스처럼 변해가고 있다. 세계적인 흐름과 다르게 변화 발전하고 있기 때문이다. 그 대표적인 예 중 하나가 이 책에서 다루는 마이바티스 프레임워크와 ORM 프레임워크에 대한 사용 비율이다. 세계적인 흐름은 하이버네이트 같은 ORM 프레임워크를 더 많이 사용하는데, 국내는 SI라는 구조적인 한계 때문에 마이바티스 프레임워크를 선호한다. 이런 상황에서 항상 의문이 생겼던 것은 국내에서 이처럼 마이바티스 프레임워크가 많이 사용되고 있음에도 이와 관련된 책이 없다는 점이었다. 지금까지 마이바티스 이전 버전인 아이바티스 번역서가 한 권 있을 뿐이었다. 이와 같은 상황에서 이 책의 출간은 더욱 중요하고 의미가 깊다. 마이바티스가 학습 비용이 낮다고 하지만 제대로 사용하려면 마이바티스 또한 학습에 일정 수준 이상의 노력과 시간을 투자해야 한다. 이 책은 저자뿐만 아니라 다양한 리뷰어들의 실무 적용 노하우가 곳곳에 숨어 있다. 그동안 잘못 사용해온 부분이 없는지 확인하고 제대로 학습할 수 있는 기회로 삼기를 바란다.
이 책을 통해 자바 객체와 관계형 데이터베이스 간의 매핑에 더 많은 관심이 생긴다면 그 다음 단계는 하이버네이트 같은 ORM 프레임워크에 도전해봤으면 좋겠다. 마이바티스가 갖지 못한 또 하나의 즐거움을 얻을 수 있을 것이다.
- 박재성 / NHN NEXT 교수, 『자바 세상의 빌드를 이끄는 메이븐』, 『Spring 프레임워크 워크북』 저자


★ 저자 서문 ★


아이바티스는 국내에서 가장 많이 사용하는 퍼시스턴스 프레임워크입니다. 기술적으로는 하이버네이트 같은 ORM 제품이 우위에 있을지 모르겠으나, 많은 분들이 걱정하는 학습 비용과 새로운 기술에 대한 두려움으로 인해 ORM보다는 아이바티스를 많이 사용합니다. JDBC를 그대로 사용하는 코딩 스타일은 이미 생산성이 많이 떨어진다는 공감대가 형성돼 있고, 그 자리를 아이바티스가 차지했습니다. 아이바티스를 다루는 책은 한 권밖에 없고 한국어 공식 문서 또한 한 가지밖에 없습니다. 마이바티스의 자료가 거의 없는 상황에서 마이바티스를 다루는 첫 책이 제 손을 거쳤다는 데에서 큰 감회를 느낍니다.

마이바티스는 JDBC를 대체하는 자바 퍼시스턴스 프레임워크로 국내에서 가장 인기 있는 퍼시스턴스 프레임워크인 아이바티스가 새로이 업그레이드된 제품입니다. 마이바티스는 아이바티스가 가진 간결함에, 아이바티스에 없던 다양한 기능과 개선을 더했습니다. 마이바티스는 기존의 아이바티스처럼 SQL을 별도의 XML에 정의하게 함으로써 관리하기가 편리하며, XML 외 애노테이션을 통해서도 SQL 정의가 가능합니다. 동적 SQL을 위해 제공하는 기능 또한 더욱 간단해졌고 XML이 아닌 자바코드를 사용해서도 동적 SQL 처리가 가능해졌습니다. 프레임워크의 간결함에 좀더 힘을 실어주는 자동 코드 생성기인 마이바티스 제너레이터도 개선되어 함께 사용할 수 있습니다.

아이바티스와 마이바티스는 저와 인연이 깊습니다. 공부도 하면서 나중에 필요할 때 보려고 아이바티스 개발자 문서를 번역한 것이 시작이었습니다. 개발자 문서 번역을 계기로 2006년 『iBatis 인 액션』의 번역에 참여했습니다. 당시에는 일을 병행하면서 번역 작업을 하는 것이 너무 힘들어 다시는 책을 쓰는 일이 없을 것이라고 생각했는데, 주위 분들의 추천으로 인해 이렇게 또 한 권의 책을 내게 됐습니다.

개발자가 책을 쓴다는 것은 자신을 성장시키는 하나의 방법이라고 생각합니다. 노력에 비해 나온 결과물이 기대에 못 미치거나 다른 사람의 평가가 걱정스럽기도 합니다. 하지만 지금 이 순간, 책을 마치고 난 후의 성취감과 짜릿함 때문에 아마 곧 다시 책을 쓰게 될지도 모르겠습니다.

이 책을 통해 초보자도 쉽게 배울 수 있도록 많은 신경을 썼습니다. 하지만 저와는 다르게 생각하는 분들이 얼마든지 계실 것이라 생각합니다. 궁금한 점이 있다면 페이스북 페이지(http://facebook.com/mybatis)에 글을 올려주세요. 회사 업무에 바빠서 바로 바로 답을 달아드릴 수는 없지만, 열심히 글을 읽고 글 하나도 빠뜨리지 않고 답변을 달아 드리겠습니다.

마지막으로, 이 책이 부디 많은 개발자 분들께 도움이 되길 바랍니다.


정보제공 : Aladin

저자소개

이동국(지은이)

현재 네이버에서 카페 서비스를 담당하고 있다. 10년 가까이 네이버에서 근무하면서 뉴스/스포츠 서비스를 담당했고, 2016년에는 포스트 서비스도 잠시 담당했다. 울산대학교에서 수학과 컴퓨터를 복수 전공했으며, 대학 졸업 후 지금까지 개발이 마냥 즐거운 개발자로 살아가고 있다. 현재까지 마이바티스를 비롯해서 아이바티스, 스프링, prototype.js, AppFuse, Visual VM 등의 공식 문서를 번역해 공유한다. 『iBATIS 인 액션』(위키북스, 2007), 『마이바티스 프로그래밍』(에이콘, 2013), 『마이바티스를 사용한 자바 퍼시스턴스 개발』(에이콘, 2013), 『마리아DB 따라잡기』(에이콘, 2013)를 번역 출간했다.

정보제공 : Aladin

목차

목차
추천의 글 Ⅰ = 4
추천의 글 Ⅱ = 6
지은이의 말 = 8
지은이 소개 = 10
들어가며 = 27
1부. 기본 = 31
 1장 스트럿츠2란 무엇인가? = 33
  1.1 스트럿츠2의 배경과 달라진 점 = 34
  1.2 스트럿츠2 들여다보기 = 37
  1.3 스트럿츠2의 핵심: 액션과 리절트 = 40
  1.4 스트럿츠2의 컨트롤러: 필터 디스패처 = 50
  1.5 웹 요청 처리에 대한 기본 지식 = 52
  1.6 정리 = 57
 2장 기본 예제를 통해 스트럿츠2와 친해지기 = 59
  2.1 문자열 출력 = 60
  2.2 문자열 목록 출력 = 68
  2.3 객체 출력 = 74
  2.4 객체 목록 출력 = 80
  2.5 날짜 출력 = 88
  2.6 정리 = 95
 3장 다양한 태그 컴포넌트 다루기 = 97
  3.1 스트럿츠2 구성요소 미리보기 = 98
   3.1.1 인터셉터 개요 = 99
   3.1.2 인터셉터 스택이란? = 103
   3.1.3 리절트의 종류 = 107
   3.1.4 환경설정의 개요 = 110
   3.1.5 태그 라이브러리의 종류 = 115
  3.2 태그 사용을 위한 필수지식 = 119
   3.2.1 액션, 인터셉터, 밸류 스택과 태그의 관계 = 119
   3.2.2 비 문자열 속성 = 121
   3.2.3 태그의 value 속성은 객체다! = 122
   3.2.4 표현식 언어의 표기법 = 123
   3.2.5 OGNL이란? = 123
  3.3 문자열 입출력 = 128
  3.4 문자열 상자 사용하기 = 139
  3.5 날짜 입출력 컴포넌트 사용하기 = 146
  3.6 태그를 이용한 페이지 링크 = 154
  3.7 체크박스 만들기 = 167
  3.8 셀렉트박스 만들기 = 175
  3.9 조건 처리 태그를 사용해 영화 순위목록 페이지 만들기 = 191
  3.10 태그를 이용해 분리된 리스트 합치기 = 198
  3.11 정리 = 204
2부. 심화 = 207
 4장 스트럿츠2 아키텍처 = 209
  4.1 스트럿츠2 아키텍처 개념도 = 210
  4.2 필터 디스패처의 역할 = 212
  4.3 액션 프록시/액션 인보케이션 = 213
   4.3.1 액션 프록시와 액션 인보케이션의 관계 = 213
   4.3.2 액션 인보케이션의 역할 = 217
  4.4 액션 컨텍스트 = 222
  4.5 액션 매퍼 = 225
   4.5.1 기본 액션 매퍼 = 225
   4.5.2 커스텀 액션 매퍼 = 236
   4.5.3 레스트풀 액션 매퍼 = 237
   4.5.4 레스트풀2 액션 매퍼 = 237
   4.5.5 혼합 액션 매퍼 = 239
  4.6 인터셉터 = 240
   4.6.1 인터셉터의 개념 = 240
   4.6.2 인터셉터 인터페이스 = 242
   4.6.3 인터셉터의 종류 = 243
   4.6.4 인터셉터의 파라미터 오버라이딩 = 263
   4.6.5 인터셉터와 필터의 차이 = 264
   4.6.6 인터셉터의 기능별 분류 = 265
   4.6.7 인터셉터 분석: 프리페어 인터셉터 = 266
  4.7 액션 = 276
   4.7.1 액션의 개념 = 276
   4.7.2 액션의 상관관계 = 277
   4.7.3 액션 체인 = 284
   4.7.4 액션의 다중 호출 = 294
  4.8 리절트 = 301
   4.8.1 리절트의 개념 = 301
   4.8.2 리절트 타입 = 303
   4.8.3 프리 리절트 리스너 = 312
  4.9 정리 = 313
 5장 스트럿츠2 환경설정 = 315
  5.1 환경설정 파일 개요 = 316
   5.1.1 web.xml에 정의할 수 있는 내용 = 317
   5.1.2 struts.xml 소개 = 322
   5.1.3 struts.properties 소개 = 326
   5.1.4 struts-default.xml 소개 = 332
   5.1.5 velocity.properties 소개 = 341
  5.2 관리적인 요소의 환경설정 = 342
   5.2.1 빈 설정 = 343
   5.2.2 상수 설정 = 344
   5.2.3 패키지 설정 = 346
   5.2.4 네임스페이스 설정 = 347
   5.2.5 인클루드 설정 = 348
  5.3 요청 처리 요소의 환경설정 = 349
   5.3.1 인터셉터 설정 = 349
   5.3.2 액션 설정 = 351
   5.3.3 리절트 설정 = 356
   5.3.4 와일드카드를 이용한 액션, 액션 메소드, 리절트 설정 = 360
  5.4 예외 처리 요소의 환경설정 = 371
  5.5 성능 튜닝 = 374
  5.6 애노테이션 = 380
   5.6.1 액션 애노테이션 = 383
   5.6.2 인터셉터 애노테이션 = 405
   5.6.3 유효성 검사 애노테이션 = 407
   5.6.4 타입 변환 애노테이션 = 428
  5.7 정리 = 433
 6장 스트럿츠2 태그를 이용한 손쉬운 Ajax 구현 = 435
  6.1 Ajax의 개념과 스트럿츠2의 Ajax 구성 = 436
   6.1.1 Ajax의 개념 = 436
  6.2 Ajax의 기능을 이용한 메뉴 만들기 = 452
  6.3 자동 요청 기능을 이용한 리얼타임 인기 검색어 출력 = 464
  6.4 탭 패널 컴포넌트를 이용한 세미나 목록과 일정 = 476
  6.5 트리 컴포넌트를 이용한 컴퓨터 부품 목록 출력 = 487
  6.6 정리 = 495
 7장 파일 업로드/다운로드 = 497
  7.1 파일 업로드 = 498
   7.1.1 아파치 커먼스 IO, FileUpload 컴포넌트 다운로드와 설치 = 498
   7.1.2 파일 업로드 크기 설정 = 502
   7.1.3 파일 업로드를 위한 액션 클래스와 태그 구성 = 503
   7.1.4 단일 파일 업로드 예제 만들기 = 507
   7.1.5 배열을 이용한 다중 파일 업로드 예제 만들기 = 519
   7.1.6 리스트를 이용한 다중 파일 업로드 예제 만들기 = 528
  7.2 파일 다운로드 = 538
   7.2.1 다운로드 액션에서 사용하는 프로퍼티 = 538
   7.2.2 struts.xml에서 다운로드 액션 정의하기 = 539
   7.2.3 텍스트 파일을 스트림 형식으로 출력하는 예제 만들기 = 541
   7.2.4 파일 다운로드 예제 만들기 = 548
  7.3 정리 = 555
 8장 유효성 검사 = 557
  8.1 스트럿츠2의 유효성 검사 = 558
   8.1.1 유효성 검사 규칙 정의 = 561
   8.1.2 넌필드 유효성 검사자와 필드 유효성 검사자 = 563
   8.1.3 유효성 검사의 단락 = 565
  8.2 예제로 배우는 유효성 검사 = 567
   8.2.1 기본 유효성 검사를 이용한 퀴즈 예제 만들기 = 568
   8.2.2 클라이언트 유효성 검사를 이용한 퀴즈 예제 만들기 = 576
   8.2.3 필드 유효성 검사를 이용한 예제 만들기 = 580
   8.2.4 넌필드 유효성 검사를 이용한 예제 만들기 = 593
  8.3 애노테이션을 이용한 유효성 검사 = 600
  8.4 스트럿츠2 유효성 검사자 요약 = 600
   8.4.1 required 유효성 검사자 = 601
   8.4.2 requiredString 유효성 검사자 = 601
   8.4.3 int 유효성 검사자 = 602
   8.4.4 double 유효성 검사자 = 603
   8.4.5 date 유효성 검사자 = 604
   8.4.6 expression 유효성 검사자 = 605
   8.4.7 fieldexpression 유효성 검사자 = 606
   8.4.8 email 유효성 검사자 = 606
   8.4.9 url 유효성 검사자 = 607
   8.4.10 visitor 유효성 검사자 = 608
   8.4.11 conversion 유효성 검사자 = 609
   8.4.12 stringlength 유효성 검사자 = 611
   8.4.13 regex 유효성 검사자 = 612
  8.5 정리 = 613
3부. 활용 = 615
 9장 애플리케이션의 국제화 = 617
  9.1 국제화 = 618
   9.1.1 애플리케이션의 국제화란? = 618
   9.1.2 Locale 클래스 = 619
  9.2 스트럿츠2의 리소스 번들 = 620
   9.2.1 액션 리소스 번들 = 621
   9.2.2 부모 클래스 리소스 번들 = 623
   9.2.3 인터페이스 리소스 번들 = 624
   9.2.4 패키지 리소스 번들 = 624
   9.2.5 글로벌 리소스 번들 = 625
   9.2.6 리소스 번들의 검색 순서 = 625
   9.2.7 UTF-8 리소스 번들 사용하기 = 627
   9.2.8 리소스 번들 활용 = 633
   9.2.9 커스텀 리소스 번들 = 640
   9.2.10 리소스 번들 포맷 사용하기 = 641
  9.3 정리 = 650
 10장 스트럿츠2 플러그인 = 653
  10.1 사이트메쉬 플러그인을 이용한 페이지 레이아웃 적용 = 655
   10.1.1 사이트메쉬 개요 = 655
   10.1.2 사이트메쉬 플러그인 라이브러리 설치 = 657
   10.1.3 사이트메쉬 플러그인을 사용하기 위한 환경설정 = 658
   10.1.4 데코레이터 페이지 만들기 = 667
   10.1.5 사이트메쉬를 활용한 메인 페이지 출력 예제 만들기 = 667
  10.2 JFreeChart 플러그인을 이용한 차트 출력 = 680
   10.2.1 JFreeChart 개요 = 680
   10.2.2 JFreeChart 라이브러리 다운로드와 설치 = 681
   10.2.3 JFreeChart를 사용하기 위한 환경설정 = 683
  10.3 JasperReport 플러그인을 이용한 보고서 출력 = 685
   10.3.1 JasperReport 개요 = 691
   10.3.2 JasperReport 리절트 타입 정의 = 694
   10.3.3 JasperReport 관련 라이브러리 다운로드와 설치 = 697
   10.3.4 도서 목록 보고서 pdf 출력 예제 만들기 = 702
  10.4 스프링 플러그인을 사용한 의존성 삽입 = 711
   10.4.1 스트럿츠2에서 스프링 플러그인의 역할 = 711
   10.4.2 스프링 소개 = 712
   10.4.3 스프링의 기본 개념 = 714
   10.4.4 스프링 라이브러리 다운로드와 설치 = 729
   10.4.5 스프링을 사용하기 위한 환경설정 = 731
   10.4.6 코드 서비스를 스프링으로 관리하는 예제 만들기 = 735
  10.5 REST 플러그인을 이용한 레스트풀 서비스 개발 = 745
   10.5.1 REST 웹 서비스 기본 개념 = 745
   10.5.2 REST 웹 서비스 개발 = 747
   10.5.3 REST 플러그인의 사용법 = 749
   10.5.4 사용자 정보 관리 레스트 웹 서비스 예제 만들기 = 756
  10.6 스트럿츠2의 기타 플러그인 = 782
   10.6.1 코드 비하인드 플러그인 = 783
   10.6.2 컨피그 브라우저 플러그인 소개 = 785
   10.6.3 JSF 플러그인 = 789
   10.6.4 플렉서스 플러그인 = 792
   10.6.5 스트럿츠1 플러그인 = 793
   10.6.6 JUnit 플러그인 = 797
   10.6.7 Json 플러그인 = 804
  10.7 정리 = 816
 11장 예외 처리, 프로파일링, 로깅 = 819
  11.1 예외 처리 = 820
   11.1.1 간단한 선언적 예외 처리 방법 = 821
   11.1.2 글로벌 예외 매핑 = 825
   11.1.3 다수의 예외 매핑 = 828
   11.1.4 예외 메시지 가져오기 = 833
   11.1.5 예외 처리 인터셉터 = 836
   11.1.6 예외 로그를 남기기 위한 설정 = 838
  11.2 프로파일링 = 839
   11.2.1 프로파일링 기능의 활성화 = 840
   11.2.2 프로파일 정보 제어하기 = 845
   11.2.3 나만의 프로파일 정보 만들기 = 845
  11.3 로깅 = 848
   11.3.1 로그 설정하기 = 848
  11.4 정리 = 852
 12장 데이터베이스 연동 = 853
  12.1 데이터베이스 액세스를 위한 서비스, 데이터 액세스 계층 구성 = 855
   12.1.1 서비스 계층과 데이터 액세스 계층 구성하기 = 856
   12.1.2 인터페이스를 활용한 설계의 이점 = 866
  12.2 JDBC를 이용한 서비스, 데이터 액세스 계층 구성 = 882
   12.2.1 JDBC를 이용해 서비스, 데이터 액세스 계층을 구성하기 위한 준비 작업 = 882
   12.2.2 JDBC를 이용해 사용자 정보 검색, 등록, 수정, 조회, 삭제 예제 만들기 = 886
  12.3 아이바티스, 스프링을 이용한 서비스, 데이터 액세스 계층 구성 = 910
   12.3.1 아이바티스 소개 = 911
   12.3.2 아이바티스와 스프링 프레임워크 연동 = 930
   12.3.3 아이바티스와 스프링을 이용해 서비스, 데이터 액세스 계층 구성하기 = 936
  12.4 정리 = 970
 13장 태그 라이브러리 예제 모음 = 971
  13.1 컨트롤 태그 = 973
   13.1.1〈s:generator/〉 = 973
   13.1.2〈s:merge/〉 = 978
   13.1.3〈s:sort/〉 = 982
   13.1.4〈s:subset/〉 = 987
  13.2 데이터 태그 = 993
   13.2.1〈s:bean/〉 = 993
   13.2.2〈s:debug/〉 = 997
   13.2.3〈s:i18n/〉 = 999
   13.2.4〈s:include/〉 = 1002
   13.2.5〈s:push/〉 = 1005
   13.2.6〈s:set/〉 = 1013
  13.3 폼 태그 = 1017
   13.3.1〈s:checkboxlist/〉 = 1019
   13.3.2〈s:combobox/〉 = 1028
   13.3.3〈s:doubleselect/〉 = 1033
   13.3.4〈s:hidden/〉 = 1040
   13.3.5〈s:optiontransferselect/〉 = 1040
   13.3.6〈s:optgroup/〉 = 1047
   13.3.7〈s:password/〉 = 1049
   13.3.8〈s:radio/〉 = 1051
   13.3.9〈s:reset/〉 = 1055
   13.3.10〈s:submit/〉 = 1059
   13.3.11〈s:token/〉 = 1068
   13.3.12〈s:updownselect/〉 = 1069
  13.4 넌폼 태그 = 1073
   13.4.1〈s:actionerror/〉 = 1073
   13.4.2〈s:actionmessage/〉 = 1075
   13.4.3〈s:component/〉 = 1078
   13.4.4〈sx:div/〉 = 1088
   13.4.5〈s:fielderror/〉 = 1100
  13.5 정리 = 1103
4부. 부록 = 1105
 부록 A. 개발 환경 구축 = 1107
  A.1 J2SE 설치 = 1108
  A.2 톰캣 설치 = 1110
  A.3 이클립스 설치 = 1112
  A.4 스트럿츠2 다운로드와 샘플 설치 = 1114
   A.4.1 스트럿츠2 다운로드 = 1114
   A.4.2 스트럿츠2 샘플 애플리케이션 설치와 테스트 = 1115
  A.5 샘플 프로젝트 구성 = 1116
   A.5.1 이클립스를 이용한 샘플 프로젝트 작성 = 1116
  A.6 오라클 데이터베이스 익스프레스 에디션 11g 설치 = 1129
   A.6.1 오라클 데이터베이스 익스프레스 에디션 11g 설치 = 1129
   A.6.2 오라클 데이터베이스 익스프레스 에디션 웹 관리 콘솔 사용하기 = 1135
 부록 B. 국가별 코드 = 1145
  B.1 언어의 국가별 ISO -639-1 코드 = 1146
  B.2 화폐의 국가별 ISO -4217 코드 = 1150
 부록 C. 스트럿츠2의 버전 업데이트 = 1157
  C.1 스트럿츠2 릴리스 노트 = 1158
  C.2 스트럿츠 2.0.1에서 2.1.x로의 마이그레이션 문제점 가이드 = 1163
   C.2.1 라이브러리 의존성 업데이트 = 1163
   C.2.2 커스텀 타입 컨버터 업데이트 = 1164
   C.2.3 struts.xml 설정 파일 업데이트 = 1164
   C.2.4 플러그인 설정의 마이그레이션 = 1165
   C.2.5 EL 표현식을 OGNL로 변환 = 1169
   C.2.6 OGNL을 통한 정적 메소드 사용법 리팩토링 = 1169
   C.2.7 로깅의 최소화 = 1169
   C.2.8 단위 테스트 갱신 = 1171
   C.2.9 url 태그상의 includeParams 속성 설정 = 1172
   C.2.10 필터 매핑, 기본 액션 확장명, 서블릿 = 1172
   C.2.11 문제점 해결 = 1174
 부록 D. EL과 JSTL = 1179
  D.1 EL = 1180
   D.1.1 EL 표현식 = 1181
   D.1.2 변수 = 1181
   D.1.3 EL의 내장 객체 = 1182
   D.1.4 상수 값 = 1183
   D.1.5 연산자 = 1183
   D.1.6 예약어 = 1184
   D.1.7 함수 = 1185
  D.2 JSTL = 1187
   D.2.1 JSTL 태그 라이브러리의 기능적인 개요 = 1188
   D.2.2 코어 태그 라이브러리 = 1191
   D.2.3 국제화 태그 라이브러리 = 1198
   D.2.4 SQL 태그 라이브러리 = 1205
   D.2.5 XML 태그 라이브러리 = 1210
   D.2.6 JSTL 환경설정  = 1219
예제 목차 = 1222
찾아보기 = 1224

관련분야 신착자료