이창의 | 이종현 | 김지후 | 오민규 | 한동근 |
---|---|---|---|---|
- 매주 두 챕터씩 공부합니다.
- 매주 공부한 내용에 대해 발표를 준비하고 발표자를 당일 선정하여 발표를 진행합니다.
- 학습한 챕터는 MarkDown 으로 정리해서 깃허브 각자의 branch 에 파일을 올립니다.
- 토론 후 정리한 MD 파일의 PR을 생성한후 Main에 병합합니다.
- 매주 금요일 20시~22시
마크다운 파일은 [O주차-0장]OOO.md (OOO은 이름)
- 벌금 만원 (추후 배분), 릴스 촬영
발표자 : ✅
불참 : 😵
주차 | 이창의 | 이종현 | 김지후 | 오민규 | 한동근 |
---|---|---|---|---|---|
예시 | ✅ | ✅ | ✅ | ✅ | ✅ |
1주차 (3월 2일) | ✅ | ||||
2주차 (3월 8일) | ✅ | ||||
3주차 (3월 15일) | ✅ 5장 | ✅ 4장 | |||
4주차 (3월 22일) | ✅ 7장 | ✅ 6장 | |||
5주차 (3월 30일) | ✅ 9장 | ✅ 8장 | |||
6주차 (4월 7일) | ✅ 10장 페치조인 전 | ✅ 10장 페치조인 후 | |||
7주차 (4월 12일) | ✅ 10장 Criteria, QueryDSL | ✅ 10장 네이티브SQL, 객체지향 쿼리 고급 | |||
8주차 (4월 19일) | ✅ | ||||
9주차 (5월 4일) | ✅ | ||||
10주차 (5월 10일) | ✅ | ||||
11주차 (5월 17일) | ✅ | ||||
12주차 (5월 24일) | ✅ |
JPA 소개와 시작
- JPA가 왜 탄생했고 JPA를 사용하기 전에는 어떤 문제점이 있었는지 알아본다.
- JPA로 바뀌면서 어떤 부분이 추상화되고 어떤 부분이 개발자가 편리하게 개발할 수 있는지 알아본다.
JPA 영속성 관리
- JPA의 영속성 관리를 알아본다.
- JPA에서 어떻게 저장, 조회, 수정, 삭제가 이루어지는지 알아본다.
- 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지 등의 기능들이 어떻게 제공되는지 알아본다.
엔티티 매핑
- JPA의 다양한 매핑 어노테이션들을 알아본다.
- 객체와 테이블 매핑, 기본 키 매핑, 필드와 컬럼 매핑을 알아본다.
- 기본 키 생성 전략, DDL 자동 생성, 이름 매핑 전략에 대하여 알아본다.
연관관계 매핑
- JPA의 연관관계 매핑 어노테이션들을 알아본다.
- 객체의 연관관계와 데이터베이스의 연관관계의 차이점과 매핑을 알아본다.
- 양방향, 단방향 연관관계, mappedBy 연관관계 주인에 대해서 알아본다.
다양한 연관관계 매핑
- 다대다, 다대일, 일대다, 일대일 등 다양한 연관관계 매핑에 대해서 알아본다.
- 연관관계를 매핑할 때 고려해야할 3가지에 대해서 알아본다.
고급 매핑
- 데이터베이스의 슈퍼 클래스, 서브 클래스에 객체의 상속 개념을 통해 매핑하는 것을 알아본다.
- 매핑 정보만 상속하는 @MappedSuperclass에 대해 알아본다.
- 데이터베이스 설계의 식별관계와 비식별관계 그리고 복합 키 매핑에 대해서 알아본다.
- 데이터베이스의 연관관계를 외래 키뿐만 아니라 연결 테이블을 사용한 방법에 대해 알아본다.
- 엔티티 하나에 여러 테이블을 매핑하는 방법에 대해서 알아본다.
프록시와 연관관계 관리
- JPA에서 제공하는 프록시에 대해 알아본다.
- 데이터베이스에서 필요할 때 조회하는 지연로딩과 즉시 조회하는 즉시로딩에 대해 알아본다.
- 영속성 전이들에 대해 알아본다.
- 고아 객체 제거 기능에 대해 알아본다.
값 타입
- ORM에서 분류하는 값 타입이 무엇인지 알아본다.
- 여러 기본 값을 묶어서 객체지향적으로 정의할 수 있는 임베디드 타입에 대해 알아본다.
- 컬렉션 값 타입에 대해 알아본다.
- 불변 객체란 무엇인지 알아본다.
- Criteria, QueryDSL, JPQL에 대해 알아본다.
- 페이징, 페치 조인, 파리미터 바인딩, 집합과 정렬, 서브쿼리, 다형성 조인, NamedQuery에 대해 알아본다.
- Criteria, QueryDSL, 네이티브 SQL에 대해서 자세히 알아본다.
- 플러시 모드를 통한 최적화와 JPQL의 동작을 알아본다.
- 벌크 연산에 대해서 알아본다.
- 스프링 데이터 프로젝트에서 제공하는 기능인 공통 인터페이스, 네임드 메서드 기능을 알아본다.
- 이전에 배웠던 네이티브 SQL, JPQL, QueryDSL을 스프링 프레임워크에서 사용하는 방법을 알아본다.
- 스프링 프레임워크에서 벌크 연산, 페이징, 정렬, 힌트, Lock, 사용자 정의 repository 기능을 사용하는 방법을 알아본다.
- 스프링에서 채택하고 있는 영속성 컨텍스트 관리에 대해서 알아본다.
- 스프링에서 사용하는 트랜잭션 범위에 대해서 알아본다.
- 자바의 컬렉션과 JPA의 특징에 대해 알아본다.
- 엔티티를 저장하거나 데이터베이스에서 가져올 때 값을 처리하는 로직을 추가할 수 있는 컨버터에 대해서 알아본다.
- 엔티티에 이벤트가 발생했을 때 (저장, 조회 등..) 로직을 추가할 수 있는 기능인 리스너에 대해서 알아본다.
- 연관된 엔티티를 조회하는 지연 로딩, JPQL의 페치 조인같은 기능을 하는 엔티티 그래프에 대해서 알아본다.
- JPA의 예외들과 스프링이 추상화한 예외 그리고 주의점에 대해 알아본다.
- 엔티티를 비교할 때 발생할 수 있는 상황들과 그에따른 해결 방법들에 대해서 알아본다.
- 프록시로 인한 문제점들과 해결방안에 대해서 알아본다.
- N+1 문제를 해결하는 방법, 읽기 전용인 엔티티를 조회하는 방법들에 대해서 알아본다.
- 배치 처리와 SQL 힌트에 대해서 알아본다.