1. 광고배너
/ 이전버튼 다음버튼
2
미리보기

자바 ORM 표준 JPA 프로그래밍(에이콘 오픈소스 프로그래밍 시리즈)
저자 : 김영한 ㅣ 출판사 : 에이콘출판

2015.07.28 ㅣ 734p ㅣ ISBN-13 : 9788960777330

정가43,000
판매가40,850(5% 할인)
적립금 1,720원 (4%)
배송일정 06월 24일 출고 가능
주문 수량 변경시 안내 배송안내
쿠폰 및 결제혜택 확인하기

크기 B5(257mm X 188mm, 사륙배판)
제품구성 단행본
이용약관 청약철회
국내도서 > 컴퓨터 > 인터넷 > 홈페이지언어(HTM...
자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룬다. 또한, 스프링 프레임워크와 JPA를 함께 사용하는 방법을 설명하고, 스프링 데이터 JPA, QueryDSL 같은 혁신적인 오픈 소스를 활용해서 자바 웹 애플리케이션을 효과적으로 개발하는 방법을 다룬다.
펼쳐보기

[목 차]

1장. JPA 소개
1.1 SQL과 문제점
1.1.1 반복, 반복 그리고 반복
1.1.2 SQL에 의존적인 개발
1.1.3 JPA와 문제 해결
1.2 패러다임의 불일치
1.2.1 상속
1.2.2 연관관계
1.2.3 객체 그래프 탐색
1.2.4 비교
1.2.5 정리
1.3 JPA란 무엇일까?
1.3.1 JPA 소개
1.3.2 왜 JPA를 사용해야 하는가?
1.4 정리

2장. JPA 시작
2.1 이클립스 설치와 프로젝트 불러오기
2.2 H2 데이터베이스 설치
2.3 라이브러리와 프로젝트 구조
2.3.1 메이븐과 사용 라이브러리 관리
2.4 객체 매핑 시작
2.5 persistence.xml 설정
2.5.1 데이터베이스 방언
2.6 애플리케이션 개발
2.6.1 엔티티 매니저 설정
2.6.2 트랜잭션 관리
2.6.3 비즈니스 로직
2.6.4 JPQL
2.7 정리

3장. 영속성 관리
3.1 엔티티 매니저 팩토리와 엔티티 매니저
3.2 영속성 컨텍스트란?
3.3 엔티티의 생명주기
3.4 영속성 컨텍스트의 특징
3.4.1 엔티티 조회
3.4.2 엔티티 등록
3.4.3 엔티티 수정
3.4.4 엔티티 삭제
3.5 플러시
3.5.1 플러시 모드 옵션
3.6 준영속
3.6.1 엔티티를 준영속 상태로 전환: detach( )
3.6.2 영속성 컨텍스트 초기화: clear( )
3.6.3 영속성 컨텍스트 종료: close( )
3.6.4 준영속 상태의 특징
3.6.5 병합: merge( )
3.7 정리

4장. 엔티티 매핑
4.1 @Entity
4.2 @Table
4.3 다양한 매핑 사용
4.4 데이터베이스 스키마 자동 생성
4.5 DDL 생성 기능
4.6 기본 키 매핑
4.6.1 기본 키 직접 할당 전략
4.6.2 IDENTITY 전략
4.6.3 SEQUENCE 전략
4.6.4 TABLE 전략
4.6.5 AUTO 전략
4.6.6 기본 키 매핑 정리
4.7 필드와 컬럼 매핑: 레퍼런스
4.7.1 @Column
4.7.2 @Enumerated
4.7.3 @Temporal
4.7.4 @Lob
4.7.5 @Transient
4.7.6 @Access
4.8 정리

실전 예제 1. 요구사항 분석과 기본 매핑
__요구사항 분석
__도메인 모델 분석
__테이블 설계
__엔티티 설계와 매핑
__데이터 중심 설계의 문제점

5장. 연관관계 매핑 기초
5.1 단방향 연관관계
5.1.1 순수한 객체 연관관계
5.1.2 테이블 연관관계
5.1.3 객체 관계 매핑
5.1.4 @JoinColumn
5.1.5 @ManyToOne
5.2 연관관계 사용
5.2.1 저장
5.2.2 조회
5.2.3 수정
5.2.4 연관관계 제거
5.2.5 연관된 엔티티 삭제
5.3 양방향 연관관계
5.3.1 양방향 연관관계 매핑
5.3.2 일대다 컬렉션 조회
5.4 연관관계의 주인
5.4.1 양방향 매핑의 규칙: 연관관계의 주인
5.4.2 연관관계의 주인은 외래 키가 있는 곳
5.5 양방향 연관관계 저장
5.6 양방향 연관관계의 주의점
5.6.1 순수한 객체까지 고려한 양방향 연관관계
5.6.2 연관관계 편의 메소드
5.6.3 연관관계 편의 메소드 작성 시 주의사항
5.7 정리

실전 예제 2. 연관관계 매핑 시작
__일대다, 다대일 연관관계 매핑
__객체 그래프 탐색

6장. 다양한 연관관계 매핑
6.1 다대일
6.1.1 다대일 단방향 [N:1]
6.1.2 다대일 양방향 [N:1, 1:N]
6.2 일대다
6.2.1 일대다 단방향 [1:N]
6.2.2 일대다 양방향 [1:N, N:1]
6.3 일대일 [1:1]
6.3.1 주 테이블에 외래 키
6.3.2 대상 테이블에 외래 키
6.4 다대다 [N:N]
6.4.1 다대다: 단방향
6.4.2 다대다: 양방향
6.4.3 다대다: 매핑의 한계와 극복, 연결 엔티티 사용
6.4.4 다대다: 새로운 기본 키 사용
6.4.5 다대다 연관관계 정리
6.5 정리

실전 예제 3. 다양한 연관관계 매핑
__일대일 매핑
__다대다 매핑

7장. 고급 매핑
7.1 상속 관계 매핑
7.1.1 조인 전략
7.1.2 단일 테이블 전략
7.1.3 구현 클래스마다 테이블 전략
7.2 @MappedSuperclass
7.3 복합 키와 식별 관계 매핑
7.3.1 식별 관계 vs 비식별 관계
7.3.2 복합 키: 비식별 관계 매핑
7.3.3 복합 키: 식별 관계 매핑
7.3.4 비식별 관계로 구현
7.3.5 일대일 식별 관계
7.3.6 식별, 비식별 관계의 장단점
7.4 조인테이블
7.4.1 일대일 조인테이블
7.4.2 일대다 조인테이블
7.4.3 다대일 조인테이블
7.4.4 다대다 조인테이블
7.5 엔티티 하나에 여러 테이블 매핑
7.6 정리

실전 예제 4. 상속 관계 매핑
__상속 관계 매핑
__@MappedSuperclass 매핑

8장. 프록시와 연관관계 관리
8.1 프록시
8.1.1 프록시 기초
8.1.2 프록시와 식별자
8.1.3 프록시 확인
8.2 즉시 로딩과 지연 로딩
8.2.1 즉시 로딩
8.2.2 지연 로딩
8.2.3 즉시 로딩, 지연 로딩 정리
8.3 지연 로딩 활용
8.3.1 프록시와 컬렉션 래퍼
8.3.2 JPA 기본 페치 전략
8.3.3 컬렉션에 FetchType.EAGER 사용 시 주의점
8.4 영속성 전이 - CASCADE
8.4.1 영속성 전이: 저장
8.4.2 영속성 전이: 삭제
8.4.3 CASCADE의 종류
8.5 고아 객체
8.6 영속성 전이 + 고아 객체, 생명주기
8.7 정리

실전 예제 5. 연관관계 관리
__글로벌 페치 전략 설정
__영속성 전이 설정

9장. 값 타입
9.1 기본값 타입
9.2 임베디드 타입(복합 값 타입)
9.2.1 임베디드 타입과 테이블 매핑
9.2.2 임베디드 타입과 연관관계
9.2.3 @AttributeOverride: 속성 재정의
9.2.4 임베디드 타입과 null
9.3. 값 타입과 불변 객체
9.3.1 값 타입 공유 참조
9.3.2 값 타입 복사
9.3.3 불변 객체
9.4. 값 타입의 비교
9.5. 값 타입 컬렉션
9.5.1 값 타입 컬렉션 사용
9.5.2 값 타입 컬렉션의 제약사항
9.6 정리

실전 예제 6. 값 타입 매핑
__실전 예제 정리

10장. 객체지향 쿼리 언어
10.1 객체지향 쿼리 소개
10.1.1 JPQL 소개
10.1.2 Criteria 쿼리 소개
10.1.3 QueryDSL 소개
10.1.4 네이티브 SQL 소개
10.1.5 JDBC 직접 사용, 마이바티스 같은 SQL 매퍼 프레임워크 사용
10.2 JPQL
10.2.1 기본 문법과 쿼리 API
10.2.2 파라미터 바인딩
10.2.3 프로젝션
10.2.4 페이징 API
10.2.5 집합과 정렬
10.2.6 JPQL 조인
10.2.7 페치 조인
10.2.8 경로 표현식
10.2.9 서브 쿼리
10.2.10 조건식
10.2.11 다형성 쿼리
10.2.12 사용자 정의 함수 호출(JPA 2.1)
10.2.13 기타 정리
10.2.14 엔티티 직접 사용
10.2.15 Named 쿼리: 정적 쿼리
10.3 Criteria
10.3.1 Criteria 기초
10.3.2 Criteria 쿼리 생성
10.3.3 조회
10.3.4 집합
10.3.5 정렬
10.3.6 조인
10.3.7 서브 쿼리
10.3.8 IN 식
10.3.9 CASE 식
10.3.10 파라미터 정의
10.3.11 네이티브 함수 호출
10.3.12 동적 쿼리
10.3.13 함수 정리
10.3.14 Criteria 메타 모델 API
10.4 QueryDSL
10.4.1 QueryDSL 설정
10.4.2 시작
10.4.3 검색 조건 쿼리
10.4.4 결과 조회
10.4.5 페이징과 정렬
10.4.6 그룹
10.4.7 조인
10.4.8 서브 쿼리
10.4.9 프로젝션과 결과 반환
10.4.10 수정, 삭제 배치 쿼리
10.4.11 동적 쿼리
10.4.12 메소드 위임
10.4.13 QueryDSL 정리
10.5 네이티브 SQL
10.5.1 네이티브 SQL 사용
10.5.2 Named 네이티브 SQL
10.5.3 네이티브 SQL XML 에 정의
10.5.4 네이티브 SQL 정리
10.5.5 스토어드 프로시저(JPA 2.1)
10.6 객체지향 쿼리 심화
10.6.1 벌크 연산
10.6.2 영속성 컨텍스트와 JPQL
10.6.3 JPQL과 플러시 모드
10.7 정리

11장. 웹 애플리케이션 제작
11.1 프로젝트 환경설정
11.1.1 프로젝트 구조
11.1.2 메이븐과 사용 라이브러리 관리
11.1.3 스프링 프레임워크 설정
11.2 도메인 모델과 테이블 설계
11.2.1 요구사항 분석
11.2.2 도메인 모델 설계
11.2.3 테이블 설계
11.2.4 연관관계 정리
11.2.5 엔티티 클래스
11.3 애플리케이션 구현
11.3.1 개발 방법
11.3.2 회원 기능
11.3.3 상품 기능
11.3.4 주문 기능
11.3.5 웹 계층 구현
11.4 정리

12장. 스프링 데이터 JPA
12.1 스프링 데이터 JPA 소개
12.1.1 스프링 데이터 프로젝트
12.2 스프링 데이터 JPA 설정
12.3 공통 인터페이스 기능
12.4 쿼리 메소드 기능
12.4.1 메소드 이름으로 쿼리 생성
12.4.2 JPA NamedQuery
12.4.3 @Query, 리파지토리 메소드에 쿼리 정의
12.4.4 파라미터 바인딩
12.4.5 벌크성 수정 쿼리
12.4.6 반환 타입
12.4.7 페이징과 정렬
12.4.8 힌트
12.4.9 Lock
12.5 Specifications(명세)
12.6 사용자 정의 리파지토리 구현
12.7 Web 확장
12.7.1 설정
12.7.2 도메인 클래스 컨버터 기능
12.7.3 페이징과 정렬 기능
12.8 스프링 데이터 JPA가 사용하는 구현체
12.9 JPA 샵에 적용
12.9.1 환경 설정
12.9.2 리파지토리 리팩토링
12.9.3 명세 적용
12.10 스프링 데이터 JPA와 QueryDSL 통합
12.10.1 QueryDslPredicateExecutor 사용
12.10.3 QueryDslRepositorySupport 사용
12.11 정리

13장. 웹 애플리케이션과 영속성 관리
13.1 트랜잭션 범위의 영속성 컨텍스트
13.1.1 스프링 컨테이너의 기본 전략
13.2 준영속 상태와 지연 로딩
13.2.1 글로벌 페치 전략 수정
13.2.2 JPQL 페치 조인
13.2.3 강제로 초기화
13.2.4 FACADE 계층 추가
13.2.5 준영속 상태와 지연 로딩의 문제점
13.3 OSIV
13.3.1 과거 OSIV: 요청 당 트랜잭션
13.3.2 스프링 OSIV: 비즈니스 계층 트랜잭션
13.3.3 OSIV 정리
13.4 너무 엄격한 계층
13.5 정리

14장. 컬렉션과 부가 기능
14.1 컬렉션
14.1.1 JPA와 컬렉션
14.1.2 Collection, List
14.1.3 Set
14.1.4 List + @OrderColumn
14.1.5 @OrderBy
14.2 @Converter
14.2.1 글로벌 설정
14.3 리스너
14.3.1 이벤트 종류
14.3.2 이벤트 적용 위치
14.4 엔티티 그래프
14.4.1 Named 엔티티 그래프
14.4.2 em.find( )에서 엔티티 그래프 사용
14.4.3 subgraph
14.4.4 JPQL에서 엔티티 그래프 사용
14.4.5 동적 엔티티 그래프
14.4.6 엔티티 그래프 정리
14.5 정리

15장. 고급 주제와 성능 최적화
15.1 예외 처리
15.1.1 JPA 표준 예외 정리
15.1.2 스프링 프레임워크의 JPA 예외 변환
15.1.3 스프링 프레임워크에 JPA 예외 변환기 적용
15.1.4 트랜잭션 롤백 시 주의사항
15.2 엔티티 비교
15.2.1 영속성 컨텍스트가 같을 때 엔티티 비교
15.2.2 영속성 컨텍스트가 다를 때 엔티티 비교
15.3 프록시 심화 주제
15.3.1 영속성 컨텍스트와 프록시
15.3.2 프록시 타입 비교
15.3.3 프록시 동등성 비교
15.3.4 상속관계와 프록시
15.4 성능 최적화
15.4.1 N+1 문제
15.4.2 읽기 전용 쿼리의 성능 최적화
15.4.3 배치 처리
15.4.4 SQL 쿼리 힌트 사용
15.4.5 트랜잭션을 지원하는 쓰기 지연과 성능 최적화
15.5 정리

16장. 트랜잭션과 락, 2차 캐시
16.1 트랜잭션과 락
16.1.1 트랜잭션과 격리 수준
16.1.2 낙관적 락과 비관적 락 기초
16.1.3 @Version
16.1.4 JPA 락 사용
16.1.5 JPA 낙관적 락
16.1.6 JPA 비관적 락
16.1.7 비관적 락과 타임아웃
16.2 2차 캐시
16.2.1 1차 캐시와 2차 캐시
16.2.2 JPA 2차 캐시 기능
16.2.3 하이버네이트와 EHCACHE 적용
16.3 정리


펼쳐보기
자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룬다. 또한, 스프링 프레임워크와 JPA를 함께 사용하는 방법을 설명하고, 스프링 데이터 JPA, QueryDSL 같은 혁신적인 오픈 소스를 활용해서 자바 웹 애플리케이션을 효과적으로 개발하는 방법을 다룬다.

■ JPA 기초 이론과 핵심 원리
■ JPA로 도메인 모델을 설계하는 과정을 예제 중심으로 설명
■ 다양한 객체 지향 쿼리 언어 설명
■ JPA와 스프링 프레임워크를 함께 사용해서 웹 애플리케이션을 개발하는 방법
■ 스프링 데이터 JPA, QueryDSL 소개 및 활용
■ 실무에서 JPA를 사용할 때 성능을 최적화하는 다양한 방법

이 책의 대상 독자

이 책은 JPA를 사용해서 엔터프라이즈 애플리케이션을 개발하려는 모든 자바 개발자를 대상으로 한다. 이 책의 내용을 이해하려면 자바 언어와 JDBC를 사용한 데이터베이스 프로그래밍, 그리고 객체지향 프로그래밍과 관계형 데이터베이스에 대해 어느 정도 알고 있어야 한다. 추가로 3부는 웹 개발과 스프링 프레임워크에 대한 기초 지식이 필요하며 JUnit을 다룰 수 있어야 한다. 그리고 예제 코드를 실행하려면 메이븐에 대해서도 약간의 지식이 필요하다.

이 책의 구성

JPA는 크게 객체와 테이블을 어떻게 매핑해야 하는지에 관한 설계 부분과 설계한 모델을 실제 사용하는 부분으로 나눌 수 있다. 책의 앞부분에서는 기초 이론과 설계 방법을 학습하고 뒷부분에서는 학습한 이론을 바탕으로 JPA를 활용해서 실제 웹 애플리케이션을 개발한다.

이 책은 크게 네 부분으로 나뉘어 있다.

1장에서 9장은 이론 편이다. 객체와 테이블을 매핑하는 방법과 JPA의 핵심 기능들을 알아본다. 4장부터 9장까지는 각 장의 마지막에 점진적으로 도메인 모델을 설계해 나가는 실전 예제가 있어서 학습한 내용을 실제로 적용해볼 수 있게 했다.
10장은 객체지향 쿼리 언어에 대한 내용이다. JPA가 제공하는 객체지향 쿼리 언어인 JPQL(Java Persistence Query Language)부터 직접 SQL을 작성하는 네이티브 SQL까지 알아본다.
11장과 12장은 실무에서 JPA를 사용하기 위한 활용편이다. 스프링 프레임워크와 JPA를 사용해서 어떻게 웹 애플리케이션을 개발하는지 학습하고 스프링 데이터 JPA와 QueryDSL이라는 혁신적인 오픈소스도 사용해본다.
13장에서 16장은 트랜잭션과 락, 캐시, 성능 최적화 등 JPA의 다양한 고급 주제들을 다룬다.

펼쳐보기

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.

독자서평 쓰기 로그인을 하시면 독자서평을 쓰실 수 있습니다.
도서평점
내용
등록하기
0/2000자
교환/반품 방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
교환/반품 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
교환/반품 비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
교환/반품 불가사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우 예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기 >

    이 분야의 신간

    더보기 >
      맨위로가기

      영풍문고 로고

      • 회사명 : (주)영풍문고
      • 대표이사 : 김경환
      • 소재지 : 서울특별시 종로구 청계천로 41 (우)03188
      • 사업자 등록번호 : 773-86-01800 ㅣ 통신판매업 신고번호 : 2023-서울종로-0130 [ 사업자정보확인 ]
      • 개인정보관리 책임자 : 조순제 ㅣ customer@ypbooks.co.kr ㅣ 대량주문 : webmaster@ypbooks.co.kr
      COPYRIGHT © YOUNGPOONG BOOKSTORE INC. ALL RIGHTS RESERVED.
      영풍문고 네이버블로그 영풍문고 인스타그램
      맨위로가기