연관관계 매핑
단방향 vs 양방향
Entity 매핑 : Entity 클래스에 DB 테이블과 컬럼, 기본 키, 외래 키 등을 설정하는 것
연관관계 매핑 : DB 테이블의 외래 키를 객체의 참조와 매핑하는 것
- 다중성 : @OneToOne, @OneToMany, @ManyToOne, @ManyToMany
- 방향성 : 단방향, 양방향
-- 양방향 매핑은 단방향 매핑에 비해 반대 방향으로의 객체 그래프 탐색 기능이 추가된 것뿐, 대개의 경우 단방향 매핑이면 충분하다.
-- 일대다 연관관계 매핑에서 cascade를 통한 insert 시 양방향 관계를 맺어주면 추가적인 update 쿼리가 사라진다.
N+1 문제
Fetch 전략 : FetchType.EAGER, FetchType.LAZY
N+1 문제 : Entity에 대해 하나의 쿼리로 N개의 레코드를 가져왔을 때, 연관관계 Entity를 가져오기 위해 쿼리를 N번 추가적으로 수행하는 문제
- EAGER 전략 뿐만 아니라 LAZY 전략으로 설정해도 연관 Entity를 참조하면 추가적인 쿼리가 수행된다.
- findAll() 또한 N+1 문제가 발생할 수 있다.
Spring Data JPA Repository
JPA Repository와 JOIN
JPA Repository 메서드로도 JOIN 쿼리를 실행할 수 있다.
- "_"(underscore)를 통해 내부 속성값에 접근할 수 있다.
Page vs Slice
Page interface는 Slice interface를 상속받았다.
- Page 객체로 반환받을 때 select count(*)가 추가로 수행된다.
JPA Repository 메서드와 DTO Projection
JPA Repository 메서드로도 DTO Projection을 할 수 있다.
- Class 기반 Projection, Interface 기반 Projection, Dynamic Projection
'공부 기록 > 영상 후기' 카테고리의 다른 글
[10분 테코톡] 철시의 요청 응답 흐름 과정 (0) | 2023.04.20 |
---|---|
서블릿/JSP 강의 03 - 웹 서버 프로그램과 Servlet (0) | 2023.04.20 |
톰캣 #04 환경설정 (0) | 2023.04.11 |
톰캣 #02 설치환경 (0) | 2023.04.11 |
톰캣 #01 소개 (0) | 2023.04.11 |