Nellie's Blog

자바 ORM 표준 JPA 프로그래밍 총정리 본문

Back-end/JPA

자바 ORM 표준 JPA 프로그래밍 총정리

Nellie Kim 2023. 1. 23. 18:49
728x90

1장. JPA 소개

1. SQL을 직접 다룰 때 발생하는 문제점

1) 반복, 반복 그리고 반복

2) SQL에 의존적인 개발

3) JPA와 문제 해결

 

2. 패러다임의 불일치

1) 상속

2) 연관관계

3) 객체 그래프 탐색

4) 비교

5) 정리

 

3. JPA란 무엇인가?

1) JPA 소개

2) 왜 JPA를 사용해야 하는가?

 

4. 정리

 

2장. JPA 시작

1. 이클립스 설치와 프로젝트 불러오기

2. H2 데이터베이스 설치

3. 라이브러리와 프로젝트 구조

1) 메이븐과 사용 라이브러리 관리

4. 객체 매핑 시작

5. persistence.xml 설정

1) 데이터베이스 방언

6. 애플리케이션 개발

1) 엔티티 매니저 설정

2) 트랜잭션 관리

3) 비즈니스 로직

4) JPQL

7. 정리

 

3장. 영속성 관리

1. 엔티티 매니저 팩토리와 엔티티 매니저

2. 영속성 컨텍스트란?

3. 엔티티의 생명주기

4. 영속성 컨텍스트의 특징

1) 엔티티 조회

2) 엔티티 등록

3) 엔티티 수정

4) 엔티티 삭제

5. 플러시

1) 플러시 모드 옵션

6. 준영속

1) 엔티티를 준영속 상태로 전환 : detach()

2) 영속성 컨텍스트 초기화 : clear()

3) 영속성 컨텍스트 종료: close()

4) 준영속 상태의 특징

5) 병합 : merge()

7. 정리

 

 

4장. 엔티티 매핑

1. @Entity

2. @Table

3. 다양한 매핑 사용

4. 데이터베이스 스키마 자동 생성

5. DDL 생성 기능

6. 기본 키 매핑

1) 기본 키 직접 할당 전략

2) IDENTITY 전략

3) SEQUENCE 전략

4) TABLE 전략

5) AUTO 전략

6) 기본 키 매핑 정리

 

7. 필드와 컬럼 매핑 : 레퍼런스

1) @Column

2) @Enumerated

3) @Temporal

4) @Lob

5) @Transient

6) @Access

8. 정리

 

5장. 연관관계 매핑 기초

1. 단방향 연관관계

1) 순수한 객체 연관관계

2) 테이블 연관관계

3) 객체 관계 매핑

4) @JoinColumn

5) @ManyToOne

2. 연관관계 사용

1) 저장

2) 조회

3) 수정

4) 연관관계 제거

5) 연관된 엔티티 삭제

3. 양방향 연관관계

1) 양방향 연관관계 매핑

2) 일대다 컬렉션 조회

4. 연관관계의 주인

1) 양방향 매핑의 규칙 : 연관관계의 주인

2) 연관관계의 주인은 외래 키가 있는 곳

5. 양방향 연관관계 저장

6. 양방향 연관관계의 주의점

1) 순수한 객체까지 고려한 양방향 연관관계

2) 연관관계 편의 메소드

3) 연관관계 편의 메소드 작성 시 주의사항

7. 정리

 

6장. 다양한 연관관계 매핑

1. 다대일

1) 다대일 단방향 [N:1]

2) 다대일 양방향 [N:1, 1:N]

2. 일대다

1) 일대다 단방향 [1:N]

2) 일대다 양방향 [1:N, N:1]

3. 일대일 [1:1]

1) 주 테이블에 외래 키

2) 대상 테이블에 외래 키

4. 다대다 [N:N]

1) 다대다 : 단방향

2) 다대다 : 양방향

3) 다대다 : 매핑의 한계와 극복, 연결 엔티티 사용

4) 다대다 : 새로운 기본 키 사용

5) 다대다 연관관계 정리

5. 정리

 

7장. 고급 매핑

1. 상속 관계 매핑

1) 조인 전략

2) 단일 테이블 전략

3) 구현 클래스마다 테이블 전략

2. @MappedSuperclass

3. 복합 키와 식별 관계 매핑

1) 식별 관계 vs 비식별 관계

2) 복합 키 : 비식별 관계 매핑

3) 복합 키 : 식별 관계 매핑

4) 비식별 관계로 구현

5) 일대일 식별 관계

6) 식별, 비식별 관계의 장단점

4. 조인 테이블

1) 일대일 조인 테이블

2) 일대다 조인 테이블

3) 다대일 조인 테이블

4) 다대다 조인 테이블

5. 엔티티 하나에 여러 테이블 매핑

6. 정리

 

8장. 프록시와 연관관계 관리

1. 프록시

1) 프록시 기초

2) 프록시와 식별자

3) 프록시 확인

2. 즉시 로딩과 지연 로딩

1) 즉시 로딩

2) 지연 로딩

3) 즉시 로딩, 지연 로딩 정리

3. 지연 로딩 활용

1) 프록시와 컬렉션 래퍼

2) JPA 기본 페치 전략

3) 컬렉션에 FetchType.EAGER 사용 시 주의점

4. 영속성 전이 : CASCADE

5. 고아 객체

6. 영속성 전이 + 고아 객체, 생명주기

7. 정리

 

9장. 값 타입

1. 기본값 타입

2. 임베디드 타입(복합 값 타입)

1) 임베디드 타입과 테이블 매핑

2) 임베디드 타입과 연관관계

3) @AttributeOverride: 속성 재정의

4) 임베디드 타입과 null

3. 값 타입과 불변 객체

1) 값 타입 공유 참조

2) 값 타입 복사

3) 불변 객체

4. 값 타입의 비교

5. 값 타입 컬렉션

1) 값 타입 컬렉션 사용

2) 값 타입 컬렉션의 제약사항

6. 정리

 

10장. 객체지향 쿼리 언어

1. 객체지향 쿼리 소개

1) JPQL 소개

2) Criteria 쿼리 소개

3) QueryDSL 소개

4) 네이티브 SQL 소개

5) JDBC 직접 사용, 마이바티스 같은 SQL매퍼 프레임워크 사용

2. JPQL

1) 기본 문법과 쿼리 API

2) 파라미터 바인딩

3) 프로젝션

4) 페이징 API

5) 집합과 정렬

6) JPQL 조인

7) 페치 조인

8) 경로 표현식

9) 서브 쿼리

10) 조건식

11) 다형성 쿼리

12) 사용자 정의 함수 호출(JPA 2.1)

13) 기타 정리

14) 엔티티 직접 사용

15) Named 쿼리 : 정적 쿼리

 

3. Criteria

1) Criteria 기초

2) Criteria 쿼리 생성

3) 조회

4) 집합

5) 정렬

6) 조인

7) 서브 쿼리

8) IN 식

9) CASE 식

10) 파라미터 정의

11) 네이티브 함수 호출

12) 동적 쿼리

13) 함수 정리

14) Criteria 메타 모델 API

 

4. QueryDSL

1) QueryDSL 설정

2) 시작

3) 검색 조건 쿼리

4) 결과 조회

5) 페이징과 정렬

6) 그룹

7) 조인

8) 서브 쿼리

9) 프로젝션과 결과 반환

10) 수정, 삭제 배치 쿼리

11) 동적 쿼리

12) 메소드 위임

13) QueryDSL 정리

5. 네이티브 SQL

1) 네이티브 SQL 사용

2) Named 네이티브 SQL

3) 네이티브 SQL XML에 정의

4) 네이티브 SQL정리

5) 스토어드 프로시저(JPA 2.1)

6. 객체지향 쿼리 심화

1) 벌크 연산

2) 영속성 컨텍스트와 JPQL

3) JPQL과 플러시 모드

7. 정리

 

'Back-end > JPA' 카테고리의 다른 글

JPA 4장 엔티티매핑  (0) 2023.01.20
JPA 3장 영속성 관리  (0) 2023.01.19
JPA 연관관계 정리 (다대일 단방향, 양방향)  (0) 2022.12.16