책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/mybatis-programming)
요약
이 책은 마이바티스 프로그래밍에 대한 풍부한 설명과 그림을 제공함으로써 독자가 개발에 쉽게 접근할 수 있도록 안내한다. SQL 매퍼 프레임워크에 대한 기본 개념뿐만 아니라 마이바티스 설정, 매핑 구문 정의, 객체 사용에 관한 풍부한 예제를 익힌다면 마이바티스 전문가로 거듭날 수 있다. 실무에서 널리 사용되는 스프링과 연동해 웹 애플리케이션을 구성하는 다양한 방법을 초보자도 따라 할 수 있도록 차근차근 설명한다.
추천의 글
그동안 저자가 글을 쓰는 과정을 지켜 보면서 이 책이 꼭 나오길 기대했다. 마이바티스의 동작 원리를 이해하기 쉽게 풀어내고 독자가 마이바티스를 잘 사용하는 데 필요한 내용을 담기 위해 노력한 것을 알기 때문이다. 드디어 책이 출간되어 기쁘다. 흔히 마이바티스는 SQL과 매핑할 자바 객체를 설정만 해주면 되기 때문에 쉽다고 생각한다. 하지만 이는 마이바티스의 기본 사용법에 불과하다.
마이바티스는 다양한 매핑 방법과 확장 방법을 제공하고 있으며, 이 확장 방법을 안다면 데이터베이스 연동을 좀 더 효과적으로 구현할 수 있다. 이 책은 기본 사용법과 확장 두 가지 영역을 모두 다루고 있다. 또한 마이바티스의 구현 원리를 설명하고 XML 설정, 자바 설정, CRUD 처리를 위한 API를 설명한다. 이를 통해 마이바티스의 기초를 제대로 쌓을 수 있다.
기초를 쌓은 뒤에는 타입 핸들러, 오브젝트 팩토리, 플러그인 등의 고급 활용 방법을 배울 수 있다. 이런 고급 활용 방법을 적재적소에 사용하면 큰 도움이 될 것이다. 나 역시 저자의 원고를 리뷰하는 과정에서 이들 고급 활용 방법을 배워 프로젝트에 도입한 적이 있는데, 이를 알지 못했다면 원하는 결과를 빠르게 얻지 못했을 것이다.
이 책의 또 다른 장점은 친절하다는 것이다. 저자는 산전수전을 다 겪은 개발자며 동시에 IT 교육기관에서 강의를 하는 전문가이기도 하다. 실무 프로젝트 경험과 강의 경험이 책에 함께 녹아 있기에 입문자도 마이바티스를 배우고 익히는 데 크게 도움이 될 것이다.
- 신림 프로그래머, 최범균
잃어버린 고리를 찾아 주는 책
개발과 관련된 공부를 하다 보면 기초적인 이론에서 프레임워크를 활용해야 하는 순간이 오게 됩니다. 최근에는 공부해야 할 내용이 많아져 이 시간이 점점 줄고 있기도 합니다.
프레임워크를 처음 사용해 볼 때는 그동안 어렵게 해오던 작업을 편하게 해주기 때문에 편리하다는 느낌을 주지만, 시간이 지나고 지식을 쌓아갈수록 프레임워크의 내부 구조나 원리를 이해하지 못한 채 사용하는 자신에게 실망하는 경우도 많아집니다. 경력 있는 개발자들이 항상 강조하는 ‘프레임워크를 사용하는 것과 이해하는 것을 혼동하지 마라’라는 충고는 항상 자신이 사용하는 프레임워크에 대해서 공부하려고 노력하라는 의미일 것입니다.
이처럼 이 책은 바로 자신이 잃어버린 고리를 찾고자 하는 사람들을 위한 책입니다. 마이바티스는 아이바티스 시절부터 계산하면 나온 지 오래된 프레임워크 중에 하나이고, 너무나도 당연하게 사용돼 왔지만, 막상 그 원리를 이해하려고 한 사람은 드뭅니다. 하지만 원리를 이해하는 것은 반드시 필요하며, 이 책은 그들에게 필요한 책입니다. 저자는 활용서 위주의 마이바티스를 이론부터 차근차근 설명해 주고 독자들이 한 걸음씩 계단을 올라가도록 돕습니다. 물론 이러한 흐름이 최근의 짧은 설명 위주의 도서에 익숙한 독자들에게는 다소 진부하게 느껴질 수도 있겠지만, 저자는 독자들에게 꾸준히 이론에서 프레임워크로 나아가는 다리를 만들어 주고 있습니다.
기존의 프레임워크 책들과 달리 이 책의 호흡은 꽤 깁니다. 책의 전반부에서는 하나의 주제를 풀어내기 위해서 저자는 짧은 주입식 설명이 아닌 길지만 생각해 볼 수 있는 설명을 제공하기 때문에 독자에 따라 호불호가 갈릴 수도 있지만 긴 호흡을 느리게 유지합니다. 책의 후반부에서는 꼼꼼하게 마이바티스의 다양한 기능들에 대해서 설명해 주고 있습니다.
이 책은 제목 그대로 마이바티스를 다루고 있습니다. 단, 활용하는 것이 중점이 아닌 이해하는 것을 목표로 하고 있습니다. 만일 독자 분들이 마이바티스라는 프레임워크 자체를 이해해 보고 싶다면 독자 분들의 책상 위에서 이 책이 떠나는 일은 없을 것입니다.
- 구멍가게 코딩단, 강요천
이 책에서 다루는 내용
■ 초급 개발자를 위한 SQL 매퍼 프레임워크 개념 설명 및 구현 과정
■ 쉽고 체계적인 설명을 통한 마이바티스 프로그래밍 작성
■ 마이바티스 프로그래밍 작성 시 발생 가능한 에러와 해결 방안
■ 마이바티스 프로그래밍을 사용한 데이터 등록, 조회, 수정, 삭제
■ 마이바티스 환경 설정에 대한 명확한 이해 및 실무 적용
■ 마이바티스 매핑 구문 정의에 필요한 구성 요소와 속성
■ 마이바티스 객체 관계 및 다양한 API
■ 웹 애플리케이션 계층(프리젠테이션, 서비스, 퍼시스턴스) 구성과 역할
■ 마이바티스와 스프링 연동 방식(SqlSessionTemplate, SqlSessionDaoSupport, 자동 매핑)에 따른 웹 애플리케이션 구현
■ 마이바티스 개발 환경 구축 방법
■ 마이바티스 편집기(mybatiseditor, MyBatipse) 설치 및 사용법
■ 아파치 Log4j2를 이용한 마이바티스 로깅 설정 및 구현
■ 다양한 마이바티스 서드파티 캐시(Ehcache, Hazelcast, Memcached, OSCache) 연동 설정 및 구현
이 책의 대상 독자
■ 예제와 그림을 통해 마이바티스 기본 개념과 원리를 차근차근 알고 싶은 독자
■ 마이바티스에 대해 자세한 설명과 풍부한 예제를 살펴보고 싶은 독자
■ 마이바티스와 스프링 연동 웹 애플리케이션 구현을 원하는 독자
이 책의 구성
이 책은 크게 네 부분으로 나뉜다.
1부는 쉽고 체계적인 설명을 통해 초보 개발자라도 마이바티스 프로그래밍을 작성할 수 있도록 구성했다. 마이바티스의 아키텍처를 깊이 이해하고 있지 못하더라도 예제를 실습하다 보면 자연스럽게 마이바티스의 개발 패턴을 자연스럽게 익힐 수 있다.
1장, ‘마이바티스 소개’에서는 SQL 매퍼 프레임워크에 대한 개념과 단계적인 구현 과정을 통해 마이바티스를 소개한다.
2장, ‘마이바티스 프로그래밍 시작’에서는 간단한 마이바티스 프로그래밍을 구현하고, 발생 가능한 에러와 해결 방안을 살펴본다.
3장, ‘데이터 관리를 위한 마이바티스 프로그래밍’에서는 마이바티스 프로그래밍을 사용해서 데이터를 등록, 조회, 수정, 삭제하는 과정을 실습한다.
2부는 마이바티스 아키텍처를 자세하게 다룬다. 1부를 통해 마이바티스의 기본적인 사용법을 익혔더라도, 이를 충분히 이해하거나 활용하려면 마이바티스 내부 아키텍처를 살펴봐야 한다. 마이바티스가 내부적으로 어떻게 동작하는지 자세히 알아볼 수 있다.
4장, ‘마이바티스 설정’에서는 마이바티스 환경 설정에 필요한 구성 요소 및 속성을 살펴보고, 실무에 적용 가능한 예제를 실습한다.
5장, ‘마이바티스 매핑 구문 정의’에서는 마이바티스 매핑 구문 정의에 필요한 구성 요소와 속성을 살펴보고, 다양한 매핑 구문을 정의한다.
6장, ‘마이바티스 객체’에서는 마이바티스 객체 관계 및 다양한 API 사용법을 살펴본다.
3부는 마이바티스를 활용하는 기술에 대해 다룬다. 최적화된 웹 애플리케이션 계층을 구성을 안내하고, 마이바티스와 스프링 프레임워크를 연동하는 다양한 방법을 소개한다.
7장, ‘마이바티스와 웹 애플리케이션’에서는 웹 서비스 제공에 필요한 웹 애플리케이션 계층 구성을 설명한다.
8장, ‘마이바티스와 스프링 연동 웹 애플리케이션’에서는 마이바티스와 스프링을 연동한 웹 애플리케이션 구현 과정을 단계적으로 실습한다.
끝으로 4부는 부록으로, 이 책에서 제공하는 예제를 실습하는 데 필요한 개발 환경을 스스로 구축하는 방법, 유용한 마이바티스 편집기 설치 및 사용법, 아파치 Log4j2를 이용한 마이바티스 로깅 설정 및 구현, 다양한 마이바티스 서드파티 캐시 연동 설정 및 구현 방법을 제공한다.
부록 A, ‘마이바티스 프로그래밍 개발 환경 구축’에서는 자바 애플리케이션 개발 환경과 웹 애플리케이션 개발 환경을 나누어서 설명한다.
부록 B, ‘마이바티스 편집기’에서는 마이바티스 편집기 설치 및 사용법을 설명한다.
부록 C, ‘마이바티스 로깅’에서는 아파치 Log4j2 설치 및 사용법을 설명한다.
부록 D, ‘마이바티스 서드파티 캐시’에서는 다양한 마이바티스 서드파티 캐시 설치 및 설정을 설명한다.
목차
목차
- 1부. 기본
- 1장. 마이바티스 소개
- __1.1 SQL 매퍼 프레임워크 개념
- __1.2 SQL 매퍼 프레임워크 구현
- ____1.2.1 중복된 기능 추출
- ____1.2.2 외부 파일 정의
- ____1.2.3 인자와 결과 자동 처리
- ____1.2.4 단순한 실행 메소드 정의
- __1.3 마이바티스 소개
- __1.4 마이바티스 프로젝트
- __1.5 정리
- 2장. 마이바티스 프로그래밍 시작하기
- __2.1 마이바티스 프로그래밍 개요
- __2.2 간단한 마이바티스 프로그래밍
- ____2.2.1 마이바티스 매퍼 XML 파일 작성 (목록 조회 매핑 구문 정의)
- ____2.2.2 마이바티스 설정 XML 파일 작성
- ____2.2.3 실행 클래스 작성 (목록 조회 API 호출)
- ____2.2.4 실행 및 로깅 설정
- __2.3 에러 발생 시 해결 방안
- ____2.3.1 마이바티스 매퍼 XML 파일 작성을 잘못한 경우
- ____2.3.2 마이바티스 설정 XML 파일 작성을 잘못한 경우
- ____2.3.3 실행 클래스 작성을 잘못한 경우
- __2.4 정리
- 3장. 데이터 관리를 위한 마이바티스 프로그래밍
- __3.1 데이터 관리 개요
- __3.2 데이터 등록
- ____3.2.1 도메인 클래스 작성
- ____3.2.2 마이바티스 매퍼 XML 파일 작성 (등록 매핑 구문 정의)
- ____3.2.3 마이바티스 설정 XML 파일 작성
- ____3.2.4 실행 클래스 작성 (등록 API 호출)
- ____3.2.5 로깅 설정
- ____3.2.6 등록 실행
- __3.3 데이터 조회
- ____3.3.1 마이바티스 매퍼 XML 파일 수정 (조회 매핑 구문 정의)
- ____3.3.2 실행 클래스 수정 (조회 API 호출)
- ____3.3.3 조회 실행
- __3.4 데이터 수정
- ____3.4.1 마이바티스 매퍼 XML 파일 수정 (수정 매핑 구문 정의)
- ____3.4.2 실행 클래스 수정 (수정 API 호출)
- ____3.4.3 수정 실행
- __3.5 데이터 삭제
- ____3.5.1 마이바티스 매퍼 XML 파일 수정 (삭제 매핑 구문 정의)
- ____3.5.2 실행 클래스 수정 (삭제 API 호출)
- ____3.5.3 수정 실행
- __3.6 정리
- 2부. 심화
- 4장. 마이바티스 설정
- __4.1 마이바티스 설정 개요
- __4.2 사용자 설정이 반드시 필요한 구성 요소
- ____4.2.1 데이터 소스 구성 요소 <dataSource>
- ____4.2.2 트랜잭션 관리자 구성 요소 <transactionManager>
- ____4.2.3 환경 구성 요소 <environment>
- ____4.2.4 매퍼 구성 요소 <mapper>
- __4.3 기본 설정이 제공되는 구성 요소
- ____4.3.1 셋팅 구성 요소 <setting>
- ____4.3.2 타입 에일리어스 구성 요소 <typeAlias>
- ____4.3.3 타입 핸들러 구성 요소 <typeHandler>
- ____4.3.4 오브젝트 팩토리 구성 요소 <objectFactory>
- __4.4 알아두면 유용한 구성 요소
- ____4.4.1 프로퍼티 구성 요소 <property>
- ________4.4.1.1 내부 프로퍼티 설정
- ________4.4.1.2 프로퍼티 파일 설정
- ________4.4.1.3 프로퍼티 객체 설정
- ________4.4.1.4 프로퍼티 설정 우선 순위
- ____4.4.2 플러그인 구성 요소 <plugin>
- ____4.4.3 데이터베이스 아이디 프로바이더 구성 요소 <databaseIdProvider>
- __4.5 정리
- 5장. 마이바티스 매핑 구문 정의
- __5.1 마이바티스 매핑 구문 정의 개요
- __5.2 인자와 결과를 지정하는 구성 요소
- ____5.2.1 파라미터 구성 요소 <parameterMap>
- ____5.2.2 리절트 구성 요소 <resultMap>
- __5.3 매핑 구문 정의에 사용하는 구성 요소
- ____5.3.1 조회 구성 요소 <select>
- ____5.3.2 등록 구성 요소 <insert>
- ____5.3.3 수정 구성 요소 <update>
- ____5.3.4 삭제 구성 요소 <delete>
- __5.4 동적 매핑 구문 생성에 사용하는 구성 요소
- ____5.4.1 조건 구성 요소 <if>
- ____5.4.2 선택 구성 요소 <choose>, <when>, <otherwise>
- ____5.4.3 복합 구성 요소 <where>, <set>, <trim>
- ____5.4.4 반복 구성 요소 <foreach>
- __5.5 공통된 매핑 구문을 재사용하기 위한 구성 요소 <sql>, <include>
- __5.6 성능 향상과 관련된 구성 요소 <cache>, <cache-ref>
- __5.7 정리
- 6장. 마이바티스 객체
- __6.1 마이바티스 객체 개요
- __6.2 매핑 구문 실행에 사용하는 객체
- ____6.2.1 SqlSession 객체
- ____6.2.2 Mapper 객체
- __6.3 매퍼 인터페이스
- ____6.3.1 조회 애노테이션 @Select
- ____6.3.2 등록 애노테이션 @Insert
- ____6.3.3 수정 애노테이션 @Update
- ____6.3.4 삭제 애노테이션 @Delete
- __6.4 동적 매핑 구문 생성에 사용하는 객체
- ____6.4.1 SelectBuilder 객체
- ____6.4.2 SqlBuilder 객체
- __6.5 쿼리문 직접 실행에 사용하는 객체
- ____6.5.1 SqlRunner 객체
- ____6.5.2 ScriptRunner 객체
- __6.6 정리
- 3부. 응용
- 7장. 마이바티스와 웹 애플리케이션
- __7.1 자바 애플리케이션 계층 구성
- __7.2 웹 애플리케이션 계층 구성
- __7.3 정리
- 8장. 마이바티스와 스프링 연동 웹 애플리케이션
- __8.1 마이바티스-스프링 연동 웹 애플리케이션 개요
- __8.2 SqlSessionTemplate 객체를 사용한 방식
- ____8.2.1 프로젝트 구성
- ____8.2.2 가게 목록 조회
- ________8.2.2.1 도메인 클래스 작성 (1/9 단계)
- ________8.2.2.2 컨트롤러 클래스 작성 (2/9 단계)
- ________8.2.2.3 스프링 설정 XML 파일 작성 (3/9 단계)
- ________8.2.2.4 배포 서술자 파일 수정 (4/9 단계)
- ________8.2.2.5 웹 애플리케이션 실행 (5/9 단계)
- ________8.2.2.6 서비스 인터페이스와 서비스 클래스 작성 (6/9 단계)
- ________8.2.2.7 데이터 접근 인터페이스와 데이터 접근 클래스 작성 (7/9 단계)
- ________8.2.2.8 SqlSessionTemplate 객체 등록 (8/9 단계)
- ________8.2.2.9 SqlSessionTemplate 객체 활성화 (9/9 단계)
- ____8.2.3 가게 등록
- ________8.2.3.1 컨트롤러 클래스 수정 (1/4 단계)
- ________8.2.3.2 서비스 인터페이스와 서비스 클래스 수정 (2/4 단계)
- ________8.2.3.3 데이터 접근 인터페이스와 데이터 접근 클래스 수정 (3/4 단계)
- ________8.2.3.4 마이바티스 매퍼 XML 파일 수정 (4/4 단계)
- ____8.2.4 가게 조회
- ________8.2.4.1 컨트롤러 클래스 수정 (1/4 단계)
- ________8.2.4.2 서비스 인터페이스와 서비스 클래스 수정 (2/4 단계)
- ________8.2.4.3 데이터 접근 인터페이스와 데이터 접근 클래스 수정 (3/4 단계)
- ________8.2.4.4 마이바티스 매퍼 XML 파일 수정 (4/4 단계)
- ____8.2.5 가게 수정
- ________8.2.5.1 컨트롤러 클래스 수정 (1/4 단계)
- ________8.2.5.2 서비스 인터페이스와 서비스 클래스 수정 (2/4 단계)
- ________8.2.5.3 데이터 접근 인터페이스와 데이터 접근 클래스 수정 (3/4 단계)
- ________8.2.5.4 마이바티스 매퍼 XML 파일 수정 (4/4 단계)
- ____8.2.6 가게 삭제
- ________8.2.6.1 컨트롤러 클래스 수정 (1/4 단계)
- ________8.2.6.2 서비스 인터페이스와 서비스 클래스 수정 (2/4 단계)
- ________8.2.6.3 데이터 접근 인터페이스와 데이터 접근 클래스 수정 (3/4 단계)
- ________8.2.6.4 마이바티스 매퍼 XML 파일 수정 (4/4 단계)
- __8.3 SqlSessionDaoSupport 객체를 사용한 방식
- __8.4 자동 매핑 방식
- __8.5 정리
- 4부. 부록
- 부록 A. 마이바티스 프로그래밍 개발 환경 구축
- __A.1 마이바티스 프로그래밍 개발 환경 구축 개요
- __A.2 자바 애플리케이션 개발 환경
- ____A.2.1 데이터베이스 설치 (1/5 단계)
- ____A.2.2 자바 설치 (2/5 단계)
- ____A.2.3 라이브러리 다운로드 (3/5 단계)
- ____A.2.4 이클립스 설치 (4/5 단계)
- ____A.2.5 자바 프로젝트 생성 (5/5 단계)
- __A.3 웹 애플리케이션 개발 환경
- ____A.3.1 라이브러리 다운로드 (1/3 단계)
- ____A.3.2 다이나믹 웹 프로젝트 생성 (2/3 단계)
- ____A.3.3 아파치 톰캣 설치 (3/3 단계)
- 부록 B. 마이바티스 편집기
- __B.1 마이바티스 편집기 설치
- __B.2 mybatiseditor 편집기 사용
- __B.2 MyBatipse 편집기 사용
- 부록 C. 마이바티스 로깅
- __C.1 마이바티스 로그 팩토리
- __C.2 아파치 Log4j2 설치 및 설정
- 부록 D. 마이바티스 서드파티 캐시
- __D.1 마이바티스 서드파티 캐시 개요
- __D.2 Ehcache 캐시 연동
- __D.3 Hazelcast 캐시 연동
- __D.4 Memcached 캐시 연동
- __D.5 OSCache 캐시 연동
도서 오류 신고
정오표
정오표
[p.214 : 아래에서 5행]
->
[p.259 : 위에서 7행 ]
Map
->
Map
[p.537 : 예제 8.3 맨 아래 태그 추가]
(예제 마지막 줄 종료 태그 없음)
->
[p.569 : 예제 8.16 맨 마지막 행 위에 선언 추가]
xsi:schemaLocation="
->
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
[p.579 : 알아두기]
[p.579 : 알아두기 : 아래에서 7행 ]
[p.676 : 아래에서 2행]
규칙이 존재하지 않으면
->
규칙이 존재하면
[p.708 : 아래에서 4행]
[p.765 : 그림 C.1 마이바티스 로그 팩토리]
SFL4J
->
SL4J