Top

마이바티스 프로그래밍 원리와 활용

  • 지은이심익찬
  • ISBN : 9788960778122
  • 50,000원
  • 2016년 08월 30일 펴냄
  • 페이퍼백 | 824쪽 | 188*250mm
  • 시리즈 : 오픈소스 프로그래밍

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(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, ‘마이바티스 서드파티 캐시’에서는 다양한 마이바티스 서드파티 캐시 설치 및 설정을 설명한다.

저자/역자 소개

지은이의 말

마이바티스는 애플리케이션 개발에 널리 사용하는 SQL 매퍼 프레임워크다. 그럼에도 불구하고 실제 대부분의 개발자는 기본적인 사용법만을 익히고 실무 개발에 들어간다. 마이바티스를 도입하는 가장 큰 이유 중 하나가 낮은 학습 곡선임을 잘 알고 있다. 또한 급변하는 개발 환경에서 다양한 애플리케이션 프레임워크를 사용해야 하는 바쁜 개발자의 현실도 충분히 이해한다.

하지만 기본 원리에 소홀한 탓에 애플리케이션을 구현하는 과정에서 많은 고초를 겪는 것을 보면 너무 안타깝다. 예를 들어 다양한 애플리케이션 프레임워크를 연동하다 보면 어느 애플리케이션 프레임워크에서 발생한 에러인지 명확히 알 수 없는 상황에 놓이게 된다. 심지어 시간이 지나도 어느 것 하나 제대로 아는 게 없다는 자괴감마저 든다. 물론 많은 시간과 노력을 투자하면, 미흡했던 지식의 한 부분은 채워지고 알 수 없을 것 같던 경계는 선명해진다.

이 책을 통해 마이바티스가 최고의 프레임워크임을 내세우려는 것은 절대 아니다. 수많은 애플리케이션 프레임워크 가운데 마이바티스의 정체를 확고히 하는 데 기여하고 싶은 생각을 담았다. 그리고 도대체 SQL 매퍼 프레임워크가 무엇이며 어디까지가 마이바티스의 역할인지 명확한 선을 긋고, 그 기점을 바탕으로 좀 더 다양한 애플리케이션 프레임워크를 학습하거나 연동시키고 싶은 독자를 향한 바람을 담은 책이다.

지은이 소개

심익찬

웹 애플리케이션 프레임워크와 연계 시스템, IT 교육에 많은 관심을 가진 개발자다. 충남대학교와 호남대학교에서 학사와 석사를 마쳤다. 다년간 금융 프로젝트와 R&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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.214 : 아래에서 5행]

->

[p.259 : 위에서 7행 ]
Map> typeAliases = SqlSessionFactory
->
Map> typeAliases = sqlSessionFactory

[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