책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 웹 서비스/웹 프로그래밍
· ISBN : 9788992939508
· 쪽수 : 960쪽
· 출판일 : 2010-06-15
책 소개
목차
1부 하이버네이트와 EJB 3.0 시작하기
1장 객체/관계형 영속화 이해하기
1.1 영속화란 무엇인가?
1.1.1 관계형 데이터베이스
1.1.2 SQL 이해하기
1.1.3 자바에서 SQL 사용하기
1.1.4 객체지향 애플리케이션에서의 영속화
1.2 패러다임 불일치
1.2.1 세밀함의 불일치 문제
1.2.2 하위 타입 문제
1.2.3 동일성 문제
1.2.4 연관 관계와 관련된 문제
1.2.5 데이터 탐색 문제
1.2.6 패러다임 불일치에 따르는 비용
1.3 영속화 계층과 대안
1.3.1 계층형 아키텍처
1.3.2 SQL과 JDBC를 이용해서 직접 작성한 영속화 계층
1.3.3 객체 직렬화 사용하기
1.3.4 객체지향 데이터베이스 시스템
1.3.5 그 밖의 대안
1.4 객체/관계형 매핑
1.4.1 ORM이란 무엇인가?
1.4.2 일반적인 ORM 문제
1.4.3 왜 ORM인가
1.4.4 하이버네이트, EJB3, JPA 소개
1.5. 정리
2장 프로젝트 시작하기
2.1. 하이버네이트 프로젝트 시작하기
2.1.2 프로젝트 구성하기
2.1.3 하이버네이트 설정과 시작
2.1.4 애플리케이션 실행과 확인
2.2 자바 퍼시스턴스 프로젝트 시작하기
2.2.1 하이버네이트 애노테이션 사용하기
2.2.2 하이버네이트 EntityManager 사용하기
2.2.3 EJB 컴포넌트 도입하기
2.2.4 하이버네이트 인터페이스로 교체하기
2.3 레거시 데이터베이스 역공학하기
2.3.1 데이터베이스 설정 만들기
2.3.2 역공학 과정 재정의하기
2.3.3 자바 소스 코드 생성하기
2.4 자바 EE 서비스와의 통합
2.4.1 JTA와의 통합
2.4.2 JNDI와 연동된 SessionFactory
2.4.3 JMX 서비스 배포
2.5 정리
3장 도메인 모델과 메타데이터
3.1 CaveatEmptor 애플리케이션
3.1.1 비즈니스 도메인 분석하기
3.1.2 CaveatEmptor 도메인 모델
3.2 도메인 모델 구현하기
3.2.1 관심사 누수 다루기
3.2.2 투명하고 자동화된 영속화
3.2.3 POJO와 영속 엔티티 클래스 작성하기
3.2.4 POJO 연관 관계 구현하기
3.2.5 접근 메서드에 로직 추가하기
3.3 객체/관계형 매핑 메타데이터
3.3.1 XML 메타데이터
3.3.2 애노테이션 기반 메타데이터
3.3.3 XDoclet 사용하기
3.3.4 전역 메타데이터 다루기
3.3.5 실행 시점에 메타데이터 조작하기
3.4 그 밖의 엔티티 표현 방법
3.4.1 동적인 애플리케이션 만들기
3.4.2 XML로 데이터 표현하기
3.5 정리
2부 매핑 개념과 전략
4장 영속 클래스 매핑하기
4.1 엔티티와 값 타입 이해하기
4.1.1 구성 단위가 세밀한 도메인 모델
4.1.2 개념 정의
4.1.3 엔티티와 값 타입 식별하기
4.2 식별자가 있는 엔티티 매핑하기
4.2.1 자바의 동일성과 동등성 이해하기
4.2.2 데이터베이스 동일성 다루기
4.2.3 데이터베이스 주키
4.3 클래스 매핑 옵션
4.3.1 동적 SQL 생성
4.3.2 엔티티가 불변성을 띠게 만들기
4.3.3 쿼리에 사용할 엔티티의 이름 부여하기
4.3.4 패키지 이름 선언하기
4.3.5 SQL 식별자의 인용부호 처리하기
4.3.6 작명 규약 구현하기
4.4 구성 단위가 세밀한 모델과 매핑
4.4.1 기본 프로퍼티 매핑하기
4.4.2 컴포넌트 매핑하기
4.5 정리
5장 상속과 사용자 정의 타입
5.1 클래스 상속 매핑하기
5.1.1 암시적 다형성을 이용한 구상 클래스마다 하나의 테이블
5.1.2 유니온을 이용한 구상 클래스마다 하나의 테이블
5.1.3 클래스 계층 구조마다 하나의 테이블
5.1.4 하위 클래스마다 하나의 테이블
5.1.5 상속 전략 섞어 쓰기
5.1.6 매핑 전략 선택
5.2 하이버네이트 타입 시스템
5.2.1 엔티티와 값 객체 요약정리
5.2.2 내장 매핑 타입
5.2.3 매핑 타입 사용하기
5.3 사용자 정의 매핑 타입 만들기
5.3.1 사용자 정의 매핑 타입 고려하기
5.3.2 확장점
5.3.3 사용자 정의 매핑 타입이 필요한 경우
5.3.4 UserType 만들기
5.3.5 CompositeUserType 만들기
5.3.6 사용자 정의 타입 매개변수화하기
5.3.7 열거형 매핑하기
5.4 정리
6장 컬렉션과 엔티티 연관 관계 매핑하기
6.1 값 타입의 컬렉션
6.1.1 컬렉션 인터페이스 선택하기
6.1.2 Set 매핑하기
6.1.3 식별자 Bag 매핑하기
6.1.4 List 매핑하기
6.1.5 Map 매핑하기
6.1.6 정렬 컬렉션과 순차 컬렉션
6.2 컴포넌트의 컬렉션
6.2.1 컴포넌트 클래스 작성하기
6.2.2 컬렉션 매핑하기
6.2.3 양방향 탐색 활성화하기
6.2.4 not-null 열 만들지 않기
6.3 애노테이션을 이용해서 컬렉션 매핑하기
6.3.1 기본적인 컬렉션 매핑
6.3.2 정렬 컬렉션과 순차 컬렉션
6.3.3 내장 객체의 컬렉션 매핑하기
6.4 부모/자식 관계 매핑하기
6.4.1 다중성
6.4.2 가능한 가장 단순한 연관 관계
6.4.3 연관 관계를 양방향으로 만들기
6.4.4 연쇄적으로 객체 상태 적용하기
6.5 정리
7장 고급 엔티티 연관 관계 매핑
7.1 단일값 엔티티 연관 관계
7.1.1 공유 주키 연관 관계
7.1.2 일대일 외래키 연관 관계
7.1.3 조인 테이블을 이용한 매핑
7.2 다중 값 엔티티 연관 관계
7.2.1 일대다 연관 관계
7.2.2 다대다 연관 관계
7.2.3 조인 테이블에 열 추가하기
7.2.4 Map 매핑하기
7.3 다형적인 연관 관계
7.3.1 다형적 다대일 연관 관계
7.3.2 다형적 컬렉션
7.3.3 유니온에 대한 다형적 연관 관계
7.3.4 다형적인 구상 클래스마다 하나의 테이블
7.4 정리
8장 레거시 데이터베이스와 사용자 정의 SQL
8.1 레거시 데이터베이스 통합하기
8.1.1 주키 다루기
8.1.2 수식을 이용한 임의 조인 조건
8.1.3 임의 테이블 조인하기
8.1.4 트리거 이용하기
8.2 SQL 직접 재정의하기
8.2.1 사용자 정의 CRUD 문 작성하기
8.2.2 저장 프로시저와 저장 함수 통합하기
8.3 스키마 DDL 개선하기
8.3.1 사용자 정의 SQL 이름과 데이터 타입
8.3.2 데이터의 일관성 보장하기
8.3.3 도메인 및 열 제약 조건 추가하기
8.3.4 테이블 수준의 제약 조건
8.3.5 데이터베이스 제약 조건
8.3.6 인덱스 생성하기
8.3.7 보조 DDL 추가하기
8.4 정리
3부 대화형 객체 처리
9장 객체를 활용한 개발
9.1 영속성 생명주기
9.1.1 객체 상태
9.1.2 영속성 컨텍스트
9.2 객체 동일성과 동등성
9.2.1 컨버세이션 소개
9.2.2 객체 동일성 범위
9.2.3 준영속 객체의 동일성
9.2.4 영속성 컨텍스트 확장하기
9.3 하이버네이트 인터페이스
9.3.1 객체 저장하고 불러오기
9.3.2 준영속 객체 이용하기
9.3.3 영속성 컨텍스트 관리하기
9.4 자바 퍼시스턴스 API
9.4.1 객체 저장하고 불러오기
9.4.2 준영속 엔티티 인스턴스 이용하기
9.5 EJB 컴포넌트에서 자바 퍼시스턴스 사용하기
9.5.1 EntityManager 주입하기
9.5.2 EntityManager 검색하기
9.5.3 EntityManagerFactory에 접근하기
9.6 정리
10장 트랜잭션과 동시성
10.1 트랜잭션 필수 지식
10.1.1 데이터베이스와 시스템 트랜잭션
10.1.2 하이버네이트 애플리케이션에서의 트랜잭션
10.1.3 자바 퍼시스턴스에서의 트랜잭션
10.2. 동시 접근 제어하기
10.2.1 데이터베이스 수준의 동시성 이해하기
10.2.2 낙관적 동시성 제어
10.2.3. 그 외 격리성 획득 보장하기
10.3 트랜잭션 미적용 데이터 접근
10.3.1 자동 커밋 신화 밝혀내기
10.3.2 하이버네이트에서 트랜잭션 적용하지 않고 개발하기
10.3.3 그 밖의 JTA를 사용하는 트랜잭션
10.4 정리
11장 컨버세이션 구현하기
11.1 하이버네이트 세션 전파하기
11.1.1 세션 전파의 쓰임새
11.1.2 스레드 로컬로 전파하기
11.1.3 JTA를 이용한 전파
11.1.4 EJB를 사용한 전파
11.2 하이버네이트를 이용한 컨버세이션
11.2.1 컨버세이션 처리 보장하기
11.2.2 준영속 객체를 이용하는 컨버세이션
11.2.3 컨버세이션까지 Session 확장하기
11.3 JPA를 이용하는 컨버세이션
11.3.1 자바 SE에서 영속성 컨텍스트 전파하기
11.3.2 컨버세이션에서 준영속 객체 병합하기
11.3.3 자바 SE에서 영속성 컨텍스트 확장하기
11.4 EJB 3.0을 이용하는 컨버세이션
11.4.1 EJB를 사용한 컨텍스트 전파
11.4.2 EJB를 사용한 영속성 컨텍스트 확장
11.5 정리
12장 효율적인 객체 수정
12.1 영속성 전이
12.1.1 접근성을 통한 영속화
12.1.2 연관 관계에 연쇄 작용 적용하기
12.1.3. 상태 전이 이용하기
12.2 벌크와 배치 연산
12.2.1 HQL과 JPA QL을 이용하는 벌크 문
12.2.2 배치를 이용해 처리하기
12.2.3 무상태 Session 사용하기
12.3 데이터 필터링과 가로채기
12.3.1 동적 데이터 필터
12.3.2 하이버네이트 이벤트 가로채기
12.3.3 핵심 이벤트 시스템
12.3.4 엔티티 리스너와 콜백
12.4 정리
13장 페치와 캐시 최적화
13.1 전역 페치 계획 정의하기
13.1.1 객체 조회 방법
13.1.2 기본적인 지연 페치 계획
13.1.3 프록시 이해하기
13.1.4 프록시 생성 비활성화하기
13.1.5 연관과 컬렉션의 즉시 로딩
13.1.6 가로채기를 이용한 지연 로딩
13.2 페치 전략 선택하기
13.2.1 배치로 데이터 선행 페치하기
13.2.2 하위 쿼리를 이용한 컬렉션 선행 페치
13.2.3 조인을 이용한 즉시 페치
13.2.4 보조 테이블에 대한 페치 최적화하기
13.2.5 최적화 지침
13.3 캐싱 기초
13.3.1 캐싱 전략과 유효 범위
13.3.2 하이버네이트 캐시 아키텍처
13. 4 캐싱 실전
13.4.1 동시성 제어 전략 선택하기
13.4.2 캐시 영역 이해하기
13.4.3 로컬 캐시 공급자 설정
13.4.4 복제 캐시 설정하기
13.4.5 2차 캐시 제어
13.5 정리
14장 HQL과 JPA QL을 이용한 쿼리
14.1 쿼리 생성과 실행
14.1.1 쿼리 준비
14.1.2 쿼리 실행
14.1.3 명명 쿼리 사용하기
14.2 기본 HQL과 JPA QL 쿼리
14.2.1 조회
14.2.2 한정
14.2.3. 프로젝션
14.3 조인, 리포팅 쿼리, 하위 쿼리
14.3.1 조인 관계와 연관 관계
14.3.2 리포팅 쿼리
14.3.3 하위 쿼리 사용하기
14.4 정리
15장 고급 쿼리 옵션
15.1 Criteria와 Example을 이용한 쿼리 수행
15.1.1 기본 Criteria 쿼리
15.1.2 조인과 동적 페치 수행
15.1.3 프로젝션과 리포팅 쿼리
15.1.4 Example을 이용한 쿼리
15.2.3 자바 퍼시스턴스에서의 네이티브 SQL 사용
15.3 컬렉션 필터링
15.4 쿼리 결과 캐시
15.4.1 쿼리 결과 캐시 활성화하기
15.4.2 쿼리 캐시 이해하기
15.4.3 쿼리 캐시는 언제 사용할까?
15.4.4 고유 식별자를 이용한 캐시 룩업
15.5 정리
16장 계층형 애플리케이션 작성과 테스트
16.1 웹 애플리케이션에서의 하이버네이트
16.1.1 기능 소개
16.1.2 컨트롤러 작성하기
16.1.3 Open Session in View 패턴
16.1.4 지능적인 도메인 모델 설계하기
16.2 영속화 계층 만들기
16.2.1 일반화된 데이터 접근 객체 패턴
16.2.2 제네릭 CRUD 인터페이스 구현하기
16.2.3 엔티티 DAO 구현하기
16.2.4 데이터 접근 객체 사용하기
16.3 커맨드 패턴 도입하기
16.3.1 기본 인터페이스
16.3.2 커맨드 객체 실행하기
16.3.3 커맨드 패턴의 변종
16.4 EJB 3.0으로 애플리케이션 설계하기
16.3.1 상태 유지 빈을 사용해 컨버세이션 구현하기
16.4.2 EJB로 DAO 작성하기
16.4.3 의존성 주입 활용하기
16.5 테스트
16.5.1 여러 종류의 테스트 이해하기
16.5.2 TestNG 도입하기
16.5.3 영속화 계층 테스트
16.5.4 성능 벤치마크 고려하기
16.6 정리
17장 제이보스 심 소개
17.1 자바 EE 5.0 프로그래밍 모델
17.1.1 JSF 살펴보기
17.1.2 EJB 3.0 살펴보기
17.1.3 JSF와 EJB 3.0을 이용하여 웹 애플리케이션 작성하기
17.1.4 애플리케이션 분석하기
17.2 심을 이용한 애플리케이션 개선
17.2.1 심 설정하기
17.2.2 페이지와 상태유지 컴포넌트를 연동하기
17.2.3 심 애플리케이션 분석하기
17.3 컨텍스트 기반 컴포넌트 이해하기
17.3.1 로그인 화면 작성하기
17.3.2 컴포넌트 생성하기
17.3.3 컨텍스트 기반 변수의 별칭 만들기
17.3.4 로그인/로그아웃 기능 완성하기
17.4 입력 유효성 검증하기
17.4.1 하이버네이트 검증기 도입하기
17.4.2 등록 페이지 만들기
17.4.3 심을 이용한 국제화
17.5 심을 이용해서 영속성 처리 단순화하기
17.5.1 컨버세이션 구현하기
17.5.2 심에 영속성 컨텍스트 관리 위임하기
17.6 정리
부록A SQL 기초
부록B 매핑 레퍼런스