목차
Part 1 하이버네이트 시작하기
   Chapter 01 ORM과 하이버네이트
      1. 영속성(Persistence) ... 14
        1.1 영속성과 RDBMS ... 15
        1.2 JDBC와 자바 빈 ... 15
      2. 객체 지향 모델링과 RDBMS의 불일치 ... 17
        2.1 상속과 다형성에서의 불일치 ... 18
        2.2 객체 간 연관의 불일치 ... 20
        2.3 세밀함의 불일치 ... 22
      3. ORM과 하이버네이트 ... 22
        3.1 완전한 ORM이 제공해야 하는 기능 ... 23
        3.2 ORM의 장점 ... 24
        3.3 ORM과 하이버네이트 ... 26
        3.4 하이버네이트의 아키텍처 개요 ... 27
   Chapter 02 하이버네이트 퀵 스타트
      1. 하이버네이트 개발 준비 ... 29
        1.1 관련 jar 파일 ... 30
      2. 하이버네이트 자바 어플리케이션 개발 ... 31
        2.1 독립 어플리케이션에 필요한 jar 파일 ... 32
        2.2 도메인 모델 생성 ... 33
        2.3 데이터베이스 테이블 생성 ... 37
        2.4 매핑 설정 파일 작성 ... 37
        2.5 하이버네이트 SessionFactory 설정 파일 작성 ... 40
        2.6 하이버네이트 SessionFactory 생성 ... 41
        2.7 하이버네이트를 이용한 CRUD 프로그래밍과 HibernateUtil ... 42
      3. 하이버네이트 웹 어플리케이션 개발 ... 52
        3.1 톰캣 DataSource 사용 예제 ... 52
Part 2 하이버네이트 기초 학습
   Chapter 03 영속 객체 매핑과 기본 API
      1. 영속 클래스(persistence class) ... 58
        1.1 기본 생성자 제공 ... 59
        1.2 식별자 필드 제공 ... 60
        1.3 클래스를 final로 지정하지 않음 ... 60
        1.4 프로퍼티를 위한 get/set 메서드 제공 ... 60
        1.5 equals() 메서드와 hashCode() 메서드를 제공 ... 61
      2. 클래스-테이블 매핑 ... 63
        2.1 클래스 테이블 매핑 정보 ... 64
        2.2 식별자 필드 매핑 ... 65
        2.3 일반 필드 매핑 ... 69
        2.4 프로퍼티 접근 모드 지정 ... 72
      3. 하이버네이트 매핑 타입 ... 74
        3.1 자바 기본 데이터 타입을 위한 매핑 타입 ... 74
        3.2 날짜와 시간을 위한 매핑 타입 ... 75
        3.3 대용량 데이터를 위한 매핑 타입 ... 75
      4. CRUD를 위한 기본 API ... 77
        4.1 객체 저장 : save(), persist() ... 77
        4.2 객체 로딩 : get(), load() ... 78
        4.3 객체 수정 : update() ... 80
        4.4 객체 삭제 : delete() ... 82
      5. 복합 키 매핑 처리 ... 82
        5.1 복합 키 클래스 ... 84
   Chapter 04 연관과 컬렉션
      1. 값 타입과 개체 타입 ... 86
        1.1 객체의 생명주기와 값 타입/개체 타입 ... 86
      2. 컴포넌트 ... 89
        2.1 〈component〉 태그를 사용하여 컴포넌트 매핑하기 ... 89
        2.2 컴포넌트에서 부모 객체 참조하기 ... 91
        2.3 컴포넌트 중첩 ... 92
      3. 1-1 관계와 n-1 관계 ... 93
        3.1 1-1 관계 ... 93
        3.2 n-1 관계 ... 101
      4. 참조에 의한 영속성 전이 ... 103
      5. 컬렉션 매핑과 1-n 관계 ... 106
        5.1 컬렉션 인터페이스 ... 106
        5.2 기본 데이터 타입의 컬렉션 ... 107
        5.3 컴포넌트 타입의 컬렉션 ... 121
        5.4 개체 타입의 컬렉션 ... 124
      6. m-n 관계 ... 133
        6.1 단방향 m-n 관계 ... 133
        6.2 양방향 m-n 관계 ... 135
      7. 조인 테이블을 이용한 컴포넌트 관계 ... 136
   Chapter 05 클래스 상속 매핑 기법
      1. 클래스 계층도 당 하나의 테이블 ... 139
      2. 클래스마다 하나의 테이블 ... 144
      3. 인스턴스 생성이 가능한 클래스마다 하나의 테이블 ... 148
   Chapter 06 하이버네이트 설정
      1. SessionFactory 설정하기 ... 152
        1.1 하이버네이트 설정 파일 ... 153
        1.2 코드에서 설정하기 ... 154
      2. 커넥션 및 DBMS 관련 프로퍼티 설정 ... 155
        2.1 데이터베이스 커넥션 설정 ... 156
        2.2 Dialect ... 158
      3. J2EE 연동 설정 ... 159
        3.1 DataSource 설정 ... 159
        3.2 트랜잭션 매니저 설정 ... 160
      4. SQL 출력 ... 162
      5. 로깅(Logging) ... 163
Part 3 하이버네이트 심화 학습
   Chapter 07 Session과 영속 객체의 생명주기
      1. 영속 객체의 생명주기 ... 168
      2. Session과 단일 작업 ... 170
      3. Session에서 객체의 동일성 ... 172
      4. 객체와 데이터베이스 동기화(flush) ... 174
      5. 준영속 객체 이용 ... 176
      6. Session 전파 ... 179
      7. openSession()과 getCurrentSession()의 차이 ... 187
   Chapter 08 트랜잭션과 동시 접근 제어
      1. 트랜잭션 처리 ... 191
        1.1 트랜잭션 격리 레벨 ... 193
        1.2 하이버네이트에서의 트랜잭션 코드 ... 195
      2. 동시 접근 처리 기법 ... 197
        2.1 낙관적 잠금(optimistic locking) ... 197
        2.2 비관적 잠금(pessimistic locking) ... 204
      3. 대화에서의 동시 접근 처리 기법 ... 206
        3.1 준영속 객체를 이용한 오프라인 낙관적 잠금 ... 207
        3.2 오프라인 비관적 잠금 ... 209
   Chapter 09 늦은 로딩과 조회 방식 제어
      1. 늦은 로딩(lazy loading)과 프록시 ... 220
        1.1 프록시와 Session 범위 ... 224
        1.2 lazy 속성을 사용한 늦은 로딩의 제어 ... 225
      2. 프록시와 상속의 타입 문제 ... 230
      3. 조회(fetch) 방식의 제어 ... 234
        3.1 배치(batch)로 데이터 미리 조회하기(pre-fetch) ... 236
        3.2 서브 쿼리를 사용한 컬렉션 조회 ... 237
        3.3 외부 조인을 이용한 조회 ... 238
   Chapter 10 HQL(Hibernate Query Language)
      1. HQL ... 240
        1.1 기본 쿼리 ... 241
        1.2 정렬 순서 지정하기 ... 242
        1.3 페이징 처리 ... 242
        1.4 조건 지정하기 ... 244
        1.5 HQL에서 사용가능한 연산자 ... 247
        1.6 결과 조회 : list(), iterate(), scroll() ... 248
        1.7 특정 프로퍼티 조회 ... 253
        1.8 함수 호출 ... 255
        1.9 그룹 관련 함수와 group by having ... 257
        1.10 컬렉션의 제약 조건 ... 258
        1.11 동일한 클래스 이름의 처리 ... 259
      2. 조인 ... 260
        2.1 연관에 의한 자동 조인 ... 261
        2.2 from 절에서의 내부 조인과 외부 조인 ... 262
        2.3 임의 객체 간의 조인 ... 265
      3. 조회(fetch) 전략 설정 ... 265
      4. 컬렉션 필터 ... 268
      5. UPDATE와 DELETE HQL ... 272
      6. HQL을 설정 파일로 분리하기 ... 274
        6.1 네임드 쿼리 작성 ... 274
        6.2 네임드 쿼리 실행 ... 275
   Chapter 11 Criteria API
      1. Criteria API ... 276
        1.1 기본 사용 ... 277
        1.2 정렬 순서 지정하기 ... 277
        1.3 페이징 처리 ... 278
        1.4 조건 지정하기 ... 278
        1.5 Projections 클래스를 이용한 데이터 로딩 ... 284
      2. 조인되는 객체의 제약 조건 지정 ... 287
      3. ResultTransformer를 적용한 결과 변환 ... 291
      4. Example을 이용한 검색 ... 294
      5. DetachedCriteria를 이용한 검색 조건 생성 ... 297
   Chapter 12 네이티브 SQL
      1. 네이티브 SQL 쿼리 ... 299
        1.1 네이티브 SQL 기본 코드 ... 300
        1.2 검색 조건 파라미터 지정 ... 300
        1.3 페이징 처리 ... 301
        1.4 특정 칼럼 로딩 ... 302
        1.5 조인시 매핑 처리 ... 304
      2. 네이티브 SQL의 분리 ... 305
   Chapter 13 하이버네이트와 캐시
      1. 하이버네이트와 캐시 ... 308
        1.1 캐시의 범위 ... 309
        1.2 하이버네이트 캐시 종류 ... 309
        1.3 동시성과 관련된 캐시의 종류 ... 311
        1.4 캐시 프로바이더 ... 311
        1.5 캐시 영역 ... 312
      2. 2차 캐시 사용 ... 313
        2.1 EHCache를 이용한 2차 캐시 설정 ... 313
        2.2 EHCache 설정 파일 ... 314
        2.3 캐시 사용 설정 ... 316
      3. 쿼리 캐시 ... 318
      4. 2차 캐시 제어 ... 320
   Chapter 14 커스터마이징
      1. 커스텀 매핑 타입 ... 322
        1.1 UserType을 이용한 커스텀 매핑 타입 ... 323
        1.2 CompositeUserType을 이용한 커스텀 매핑 타입 ... 330
        1.3 자바 5의 enum 타입 매핑 처리 ... 336
        1.4 ParameterizedType을 이용한 설정 값 전달 ... 339
      2. 커스텀 식별자 생성기 ... 343
        2.1 IdentifierGenerator 인터페이스를 이용한 커스텀 식별자 생성기 구현 ... 344
        2.2 TransactionHelper 클래스를 이용한 트랜잭션 분리 ... 349
        2.3 Configurable 인터페이스를 이용한 생성기 설정 ... 353
        2.4 PersistentIdentifierGenerator 인터페이스를 이용한 DDL 연동 ... 357
Part 4 하이버네이트 활용
   Chapter 15 어플리케이션 설계
      1. 하이버네이트 커뮤니티의 두 가지 주요 패턴 ... 362
        1.1 Open Session in View ... 362
        1.2 Generic DAO ... 368
      2. 도메인 모델 패턴 ... 375
        2.1 도메인 모델의 구성 요소 ... 376
        2.2 리포지토리의 구현 ... 378
        2.3 서비스의 구현 ... 380
        2.4 파사드의 구현 ... 381
        2.5 객체의 조립에 대하여 ... 384
   Chapter 16 Spring 2와 Hibernate 3의 연동
      1. 스프링의 HibernateDaoSupport ... 386
        1.1 스프링의 선언적 트랜잭션 ... 391
        1.2 리포지토리의 구현 ... 392
      2. 스프링을 이용한 도메인 요소의 조립 ... 393
Part 5 Appendix
   Appendix A hbm2ddl을 이용한 DB 스키마 생성
      1. hbm2ddl을 이용한 데이터베이스 생성 ... 398
        1.1 hibernate.cfg.xml 파일 이용하기 ... 400
        1.2 정교한 테이블 생성을 위한 프로퍼티 속성 ... 401
      2. Ant를 사용한 스키마 생성 자동화 ... 402
      3. 프로그램에서 스키마 생성하기 ... 404
   Appendix B HSQL을 이용한 모델링 테스트
      1. HSQL DB 설치 ... 405
        1.1 HSQL DB 실행 모드 ... 406
      2. 서버 모드 실행 ... 406
        2.1 HSQL DB 실행하기 ... 406
        2.2 데이터베이스 생성/사용하기 ... 407
        2.3 server.properties 파일을 이용한 서버 설정 ... 409
        2.4 HSQL DB에 접속하기 ... 410
        2.5 HSQL DB 서버 종료하기 ... 411
      3. HSQL DB와 하이버네이트 연동 ... 412
      4. HSQL DB의 쓰임새 ... 413
   Appendix C 참고 자료
      1. 하이버네이트 ... 415
      2. EJB 3.0 & JPA ... 415
      3. 기타 ... 415
닫기