
자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 모음

JPA 구동 방식 -> 1. Persistence에서 설정 정보 조회 (META-INF/persistence.xml), 2. EntityManagerFactory 생성, 3. EntityManager 생성

JPA에서 가장 중요한 것은 1. 객체와 관계형 데이터베이스 매핑하기(ORM), 2. 영속성 컨텍스트

객체와 테이블 매핑(@Entity, @Table), 필드와 컬럼 매핑(@Column)에 대해서 알아보자

기본키 매핑(@Id)에 대해서 알아본다 직접 할당과 다양한 자동 생성 방법이 있으며, 권장되는 식별자 생성 전략에 대해 알아보자.

대부분의 엔티티는 다른 엔티티와 연관관계가 있음. 객체는 참조를 사용해서 관계를 맺고 테이블은 외래키를 사용해서 관계를 맺음. 객체 관계 매핑(ORM)에서 가장 어려운 부분이 바로 객체 연관관계와 테이블 연관관계를 매핑하는 것

다중성(다대일-@ManyToOne 등)과 단방향/양방향, 연관관계의 주인에 대해 자세히 알아보자

관계형 데이터베이스는 상속 관계가 없음. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사함

@MappedSuperclass. 공통 매핑 정보가 필요할 때 사용. 부모 클래스를 상속받는 자식 클래스에 매핑 정보만 제공

Member를 조회할 때 Team도 함께 조회해야 할까? 프록시는 데이터베이스 조회를 미루는 가짜 엔티티 객체!

CascadeType.Remove: 부모 엔티티를 삭제하면 자식 엔티티까지 삭제. orphanRemoval=true: 부모 엔티티와 연관관계가 끊어진 자식 엔티티(고아 객체)를 자동으로 삭제

엔티티 타입과 값 타입에 대해 알아보자

JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공함

객체 지향 쿼리 언어(JPQL)의 기본적인 문법에 대해 알아보자

경로 표현식과 페치 조인(fetch join)에 대해 자세히 알아보자

Named 쿼리와 벌크 연산에 대해 알아보자