JPA 시작하기
JPA 프로젝트에 필요한 라이브러리 설정부터 EntityManager로 엔티티를 저장·조회하는 기본 동작 방식, JPQL 사용법까지 정리합니다.
JPA 프로젝트에 필요한 라이브러리 설정부터 EntityManager로 엔티티를 저장·조회하는 기본 동작 방식, JPQL 사용법까지 정리합니다.
엔티티의 생명주기와 1차 캐시, 쓰기 지연, 변경 감지, 플러시 등 영속성 컨텍스트가 제공하는 핵심 기능을 정리합니다.
@Entity, @Table, @Column 등 엔티티와 테이블을 매핑하는 어노테이션과 IDENTITY·SEQUENCE·TABLE 기본 키 생성 전략을 정리합니다.
객체와 테이블의 연관관계 차이를 이해하고, 단방향·양방향 매핑과 연관관계의 주인을 정하는 기준을 예제로 정리합니다.
다대일·일대다·일대일 연관관계를 단방향과 양방향으로 매핑하는 방법과 각 전략의 장단점을 정리합니다.
객체의 상속 구조를 테이블로 옮기는 세 가지 전략을 비교하고, 공통 매핑 정보를 모으는 @MappedSuperclass의 쓰임을 정리합니다.
JPA 프록시 객체가 만들어지고 초기화되는 과정을 em.getReference() 예제로 살펴보고, 프록시 사용 시 주의할 점을 정리합니다.
지연 로딩과 즉시 로딩의 동작 차이를 프록시 조회 관점에서 정리하고, 실무에서 지연 로딩을 써야 하는 이유를 짚습니다.
JPA CASCADE 옵션으로 부모와 자식 엔티티를 함께 영속화하는 방법과 orphanRemoval로 고아 객체를 제거하는 원리를 정리합니다.
JPA의 값 타입 개념과 기본값 타입, 임베디드 타입의 사용법, @AttributeOverride로 컬럼명을 재정의하는 방법을 정리합니다.
값 타입을 공유할 때 발생하는 부작용과 불변 객체 설계, 값 타입 컬렉션의 제약과 이를 엔티티로 대체하는 실무 방법을 정리합니다.
JPQL의 기본 문법과 TypedQuery, 파라미터 바인딩, 프로젝션, 페이징, 조인, 서브쿼리, CASE 식 등 자주 쓰는 문법을 정리합니다.
JPQL 경로 표현식에서 명시적 조인과 묵시적 조인의 차이를 정리하고, 페치 조인의 동작 방식과 페이징·DISTINCT 관련 한계를 설명합니다.