이미 소장하고 있다면 판매해 보세요.
|
1장 JDBC 코드의 대안 마이바티스
___1.1 전통적인 JDBC 프로그래밍 ___1.2 마이바티스란 무엇인가? ______1.2.1 마이바티스 프로젝트 ______1.2.2 다른 언어를 위한 마이바티스 ______1.2.3 연동 모듈 ___1.3 데이터 매퍼 마이바티스의 역사 ___1.4 마이바티스 구조 ___1.5 정리 2장 마이바티스 시작 ___2.1 개발 환경의 구축 ______2.1.1 데이터베이스 설치 ______2.1.2 JDK 설치 ______2.1.3 이클립스 설치와 예제 코드 다운로드 ______2.1.4 톰캣 설치 ___2.2 JDBC 코드 먼저 살펴보기 ___2.3 마이바티스 라이브러리 설명 ______2.3.1 마이바티스 라이브러리 파일 복사 ______2.3.2 메이븐으로 마이바티스 라이브러리 관리 ___2.4 마이바티스 설정 파일(mybatis-config.xml) ___2.5 마이바티스 객체 생성하기(SqlSessionFactory) ___2.6 정리 3장 마이바티스 CRUD ___3.1 데이터 구조 파악 ______3.1.1 데이터베이스 테이블 구조 파악 ______3.1.2 자바 모델 클래스 ___3.2 마이바티스 파라미터 표기법 ___3.3 데이터 조회 ______3.3.1 데이터를 조회하는 전통적인 JDBC 코드 ______3.3.2 데이터를 조회하는 매핑 구문으로 분리 ______3.3.3 매핑 구문을 사용하는 마이바티스 코드 생성 ______3.3.4 마이바티스 코드를 사용한 데이터 조회 ______3.3.5 데이터를 조회하는 마이바티스 실행 결과 로그 ___3.4 데이터 입력 ______3.4.1 데이터를 입력하는 전통적인 JDBC 코드 ______3.4.2 데이터를 입력하는 매핑 구문으로 분리 ______3.4.3 매핑 구문을 사용하는 마이바티스 코드 생성 ______3.4.4 마이바티스 코드를 사용해 데이터를 입력 ______3.4.5 데이터를 입력하는 마이바티스 실행 결과 로그 ___3.5 데이터 수정 ______3.5.1 데이터를 수정하는 전통적인 JDBC 코드 ______3.5.2 데이터를 수정하는 매핑 구문으로 분리 ______3.5.3 매핑 구문을 사용하는 마이바티스 코드 생성 ______3.5.4 마이바티스 코드를 사용해 데이터 수정 ______3.5.5 데이터를 수정하는 마이바티스 실행 결과 로그 ___3.6 데이터 삭제 ______3.6.1 데이터를 삭제하는 전통적인 JDBC 코드 ______3.6.2 데이터를 삭제하는 매핑 구문으로 분리 ______3.6.3 매핑 구문을 사용하는 마이바티스 코드 생성 ______3.6.4 마이바티스 코드를 사용해 데이터 삭제 ______3.6.5 데이터를 삭제하는 마이바티스 실행 결과 로그 ___3.7 정리 4장 마이바티스 웹 애플리케이션과 활용 ___4.1 마이바티스를 사용하는 웹 프로젝트 ___4.2 매퍼 XML과 매퍼 인터페이스 ______4.2.1 XML만 사용 ______4.2.2 인터페이스만 사용하는 경우 ______4.2.3 XML과 인터페이스를 함께 사용하는 경우 ___4.3 트랜잭션 관리 ______4.3.1 SqlSessionFactory ______4.3.2 트랜잭션 처리 ___4.4 조회 결과를 자바 객체에 설정(결과 매핑) ______4.4.1 한 개의 테이블을 사용하는 결과 매핑 ______4.4.2 생성자를 통한 객체 생성(constructor 엘리먼트) ______4.4.3 1:1 관계를 처리하는 association엘리먼트 ______4.4.4 1:N 관계를 처리하는 collection 엘리먼트 ______4.4.5 동적으로 결과 매핑을 선택하는 discriminator 엘리먼트 ___4.5 정리 5장 마이바티스와 스프링 웹 애플리케이션 연동 ___5.1 마이바티스 라이브러리 ______5.1.1 마이바티스 스프링 연동 모듈 복사 ______5.1.2 메이븐으로 스프링 연동 모듈 관리 ___5.2 스프링을 사용하는 자바 웹 프로젝트 생성 ___5.3 스프링 설정 ______5.3.1 스프링의 데이터베이스 관련 설정 ______5.3.2 스프링 연동 설정 ___5.4 레이어별 예제 ______5.4.1 CommentService ______5.4.2 CommentRepository ______5.4.3 데이터를 출력하는 JSP ___5.5 마이바티스와 스프링 JDBC를 함께 사용 ______5.5.1 스프링 JDBC 객체 생성 ______5.5.2 스프링 JDBC 사용 ___5.6 정리 6장 마이바티스 설정 파일 ___6.1 복잡한 마이바티스 설정 파일 ___6.2 properties 엘리먼트 ___6.3 settings 엘리먼트 ___6.4 typeAliases 엘리먼트 ___6.5 typeHandlers 엘리먼트 ___6.6 objectFactory 엘리먼트 ___6.7 plugins 엘리먼트 ___6.8 environments 엘리먼트 ______6.8.1 트랜잭션 관리자 ______6.8.2 데이터 소스 ___6.9 mappers 엘리먼트 ___6.10 정리 7장 매퍼 XML과 매퍼 인터페이스 ___7.1 매퍼 XML ______7.1.1 cache-ref, cache 엘리먼트 ______7.1.2 resultMap 엘리먼트 ______7.1.3 sql 엘리먼트 ______7.1.4 insert, update, delete 엘리먼트 ______7.1.5 selectKey엘리먼트 ______7.1.6 select 엘리먼트 ___7.2 매퍼 인터페이스 ______7.2.1 간단한 CRUD를 처리하기 위한 매퍼 인터페이스 ______7.2.2 다양한 애노테이션 결과 매핑 살펴보기 ______7.2.3 매퍼 인터페이스에서 사용 가능한 애노테이션 ___7.3 SqlSession API ___7.4 정리 8장 동적 SQL ___8.1 XML에서 동적 SQL을 위한 엘리먼트를 사용 ______8.1.1 OGNL의 기본 문법 ______8.1.2 if 엘리먼트 ______8.1.3 choose(when, otherwise) 엘리먼트 ______8.1.4 trim(where) 엘리먼트 ______8.1.5 foreach 엘리먼트 ______8.1.6 set 엘리먼트 ______8.1.7 OGNL을 사용해 정적 메소드와 정적 필드에 접근 ___8.2 마이바티스의 구문 빌더 API를 사용해 생성 ______8.2.1 SelectBuilder ______8.2.2 SqlBuilder ___8.3 일반적인 자바 코드 사용 ___8.4 정리 9장 마이바티스 제너레이터 ___9.1 마이바티스 제너레이터 소개 ___9.2 설치 방법과 실행 방법 ______9.2.1 압축 파일의 다운로드와 실행 ______9.2.2 메이븐으로 jar 파일을 다운로드하고 실행 ______9.2.3 이클립스 플러그인 설치 ___9.3 설정 파일과 설정 파일에 따른 생성 결과 ______9.3.1 애노테이션만 사용해 매핑 구문을 정의 ______9.3.2 XML만 사용해 매핑 구문 정의 ______9.3.3 애노테이션과 XML을 함께 사용해 매핑 구문 정의 ___9.4 설정 파일의 세부 옵션 ______9.4.1 generatorConfiguration ______9.4.2 properties, property ______9.4.3 classPathEntry ______9.4.4 context ______9.4.5 commentGenerator ______9.4.6 jdbcConnection ______9.4.7 javaModelGenerator ______9.4.8 javaClientGenerator ______9.4.9 sqlMapGenerator ______9.4.10 table ______9.4.11 generatedKey ___9.5 제너레이터 활용 방안 ______9.5.1 제너레이터가 생성하는 코드 전체를 그대로 사용 ______9.5.2 제너레이터로 코드 생성 후 실제 사용하는 부분만 복사 후 반영 ___9.6 정리______ 부록A 아이바티스에서 마이바티스로 전환 ___A.1 DTD 변환 규칙 ______A.1.1 설정 파일의 DTD ______A.1.2 매퍼 XML의 DTD ___A.2 설정 파일 변환 규칙 ______A.2.1 최상위 엘리먼트 ______A.2.2 settings 엘리먼트 ______A.2.3 typeAlias 엘리먼트 ______A.2.4 transactionManager 엘리먼트와 dataSource 엘리먼트 ______A.2.5 매퍼 설정 ___A.3 매퍼 XML 변환 규칙 ______A.3.1 XML 엘리먼트 ______A.3.2 중첩 결과 매핑 설정 ______A.3.3 parameterMap ______A.3.4 인라인 파라미터(파라미터 표기법) ______A.3.5 jdbcType ______A.3.6 저장 프로시저 ______A.3.7 캐시 ______A.3.8 동적 SQL ___A.4 자바 API ______A.4.1 SqlMapClient ______A.4.2 사용자 정의 타입 핸들러 부록B 마이바티스 편집기 ___B.1 설치 방법 ___B.2 제공하는 기능 부록 C 흔히 발생할 수 있는 에러 유형 |
|
아이바티스는 국내에서 가장 많이 사용하는 퍼시스턴스 프레임워크입니다. 기술적으로는 하이버네이트 같은 ORM 제품이 우위에 있을지 모르겠으나, 많은 분들이 걱정하는 학습 비용과 새로운 기술에 대한 두려움으로 인해 ORM보다는 아이바티스를 많이 사용합니다. JDBC를 그대로 사용하는 코딩 스타일은 이미 생산성이 많이 떨어진다는 공감대가 형성돼 있고, 그 자리를 아이바티스가 차지했습니다. 아이바티스를 다루는 책은 한 권밖에 없고 한국어 공식 문서 또한 한 가지밖에 없습니다. 마이바티스의 자료가 거의 없는 상황에서 마이바티스를 다루는 첫 책이 제 손을 거쳤다는 데에서 큰 감회를 느낍니다.
마이바티스는 JDBC를 대체하는 자바 퍼시스턴스 프레임워크로 국내에서 가장 인기 있는 퍼시스턴스 프레임워크인 아이바티스가 새로이 업그레이드된 제품입니다. 마이바티스는 아이바티스가 가진 간결함에, 아이바티스에 없던 다양한 기능과 개선을 더했습니다. 마이바티스는 기존의 아이바티스처럼 SQL을 별도의 XML에 정의하게 함으로써 관리하기가 편리하며, XML 외 애노테이션을 통해서도 SQL 정의가 가능합니다. 동적 SQL을 위해 제공하는 기능 또한 더욱 간단해졌고 XML이 아닌 자바코드를 사용해서도 동적 SQL 처리가 가능해졌습니다. 프레임워크의 간결함에 좀더 힘을 실어주는 자동 코드 생성기인 마이바티스 제너레이터도 개선되어 함께 사용할 수 있습니다. 아이바티스와 마이바티스는 저와 인연이 깊습니다. 공부도 하면서 나중에 필요할 때 보려고 아이바티스 개발자 문서를 번역한 것이 시작이었습니다. 개발자 문서 번역을 계기로 2006년 『iBatis 인 액션』의 번역에 참여했습니다. 당시에는 일을 병행하면서 번역 작업을 하는 것이 너무 힘들어 다시는 책을 쓰는 일이 없을 것이라고 생각했는데, 주위 분들의 추천으로 인해 이렇게 또 한 권의 책을 내게 됐습니다. 개발자가 책을 쓴다는 것은 자신을 성장시키는 하나의 방법이라고 생각합니다. 노력에 비해 나온 결과물이 기대에 못 미치거나 다른 사람의 평가가 걱정스럽기도 합니다. 하지만 지금 이 순간, 책을 마치고 난 후의 성취감과 짜릿함 때문에 아마 곧 다시 책을 쓰게 될지도 모르겠습니다. 이 책을 통해 초보자도 쉽게 배울 수 있도록 많은 신경을 썼습니다. 하지만 저와는 다르게 생각하는 분들이 얼마든지 계실 것이라 생각합니다. 궁금한 점이 있다면 페이스북 페이지(http://facebook.com/mybatis)에 글을 올려주세요. 회사 업무에 바빠서 바로 바로 답을 달아드릴 수는 없지만, 열심히 글을 읽고 글 하나도 빠뜨리지 않고 답변을 달아 드리겠습니다. 마지막으로, 이 책이 부디 많은 개발자 분들께 도움이 되길 바랍니다. ---「저자 서문」 중에서 |
|
JDBC 개발자나 아이바티스 개발자가 마이바티스를 손쉽게 이용할 수 있도록 차근차근 설명하는 세계 최초의 마이바티스 가이드
마이바티스(MyBatis)는 JDBC를 대체하는 자바 퍼시스턴스 프레임워크로 국내에서 가장 인기 있는 퍼시스턴스 프레임워크인 아이바티스(iBatis)가 새로이 업그레이드된 제품이다. 마이바티스는 아이바티스가 가진 간결함에, 아이바티스에 없던 다양한 기능과 개선을 더했다. 이 책은 JDBC를 사용하는 개발자가 쉽게 마이바티스를 사용할 수 있도록 차근차근 설명한다. 그리고 기존에 아이바티스를 사용하던 개발자에게는 마이바티스와의 차이점을 설명해서 쉽게 전환할 수 있도록 지원한다. 따라서 데이터베이스를 다루는 퍼시스턴스 프레임워크를 사용한 적 없는 개발자는 데이터베이스 연동작업을 매우 쉽게 할 수 있으며, 아이바티스를 사용해온 개발자는 처음 아이바티스를 사용할 때 느꼈던 그 간결함이 새로운 느낌으로 다가올 것이다. 이 책에서 다루는 마이바티스 버전은 3.2.1이고 스프링 연동모듈은 1.2.0이다. 이 책의 대상 독자 이 책은 마이바티스를 처음 접하는 사람을 대상으로 내용을 구성했다. 또한 기존에 아이바티스를 사용하다가 마이바티스로 전환하려는 많은 개발자를 위해 아이바티스와 비교하는 내용도 곳곳에 적어뒀다. 자바의 기본 문법을 먼저 설명하고 JDBC를 설명하면 이 책은 굉장히 두꺼워지고 이 책이 전달하고자 하는 핵심을 제대로 전달하기 힘들다. 전달하고 싶은 내용에만 충실하기 위해 독자가 간단한 자바 애플리케이션을 작성해서 자바에 대한 어느 정도의 경험이 있고 데이터베이스 연동을 위한 JDBC 코드를 작성한 경험이 있다고 가정한다. 마이바티스는 내부에서 JDBC API를 사용하기 때문에 JDBC의 스펙을 그대로 가져간다. 이 말은 JDBC API의 제약 사항이 마이바티스에서도 동일하다는 뜻이고, JDBC를 아는 만큼 쉽게 마이바티스를 익힐 수 있다는 말도 된다. 마이바티스가 데이터베이스를 사용하는 프레임워크이므로 데이터베이스에 대한 기본 지식도 반드시 갖고 있어야 한다. 많은 애플리케이션은 데이터베이스에서 select/insert/update/delete만 알아도 대부분의 작업이 가능하다. 그래서 이 책을 보기 위해서는 자바의 기본적인 지식 외에도 데이터베이스에서 데이터를 조작하기 위한 select/insert/update/delete 구문에 대해서 반드시 알아야 한다. 이 책의 구성 프레임워크를 비롯한 대부분의 기술을 습득할 때는 한 번에 모든 내용을 이해하기는 어렵다. 그렇기 때문에 전체를 구성할 수 있는 작은 단위의 주제를 나눠서 각각의 주제별로 이해하게 해야 한다. 각 주제에 대해 일정 수준 이상을 이해하고 나서 전체를 이해하게 하는 게 효과적인 학습 방법이다. 각 주제는 별도의 장으로 나눴으며 순서대로 읽도록 구성했다. 마이바티스가 처음인 독자는 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)를 통한 업데이트와 독자 지원 |