Skip to content

Latest commit

 

History

History
126 lines (98 loc) · 8.68 KB

README.md

File metadata and controls

126 lines (98 loc) · 8.68 KB

스프링 JPA 스터디 (20240301 ~ 20240531)

참여 인원

이창의 이종현 김지후 오민규 한동근
spring spring spring spring spring

규칙

  • 매주 두 챕터씩 공부합니다.
  • 매주 공부한 내용에 대해 발표를 준비하고 발표자를 당일 선정하여 발표를 진행합니다.
  • 학습한 챕터는 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 힌트에 대해서 알아본다.