Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions keyword/chapter09/keyword.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
- Spring Data JPA의 Paging
- Page
- **전체 페이지 정보**를 제공하는 페이징 객체.
- 데이터와 함께 **전체 데이터 개수, 총 페이지 수, 현재 페이지 번호** 등의 메타 정보를 포함.
- 반환 메서드: `Page<T>`
- 주로 `Pageable` 인터페이스와 함께 사용.

주요 메서드

- `getContent()`: 조회된 데이터 목록 반환.
- `getTotalPages()`: 총 페이지 수 반환.
- `getTotalElements()`: 전체 데이터 개수 반환.
- `getNumber()`: 현재 페이지 번호 반환.
- `hasNext()` / `hasPrevious()`: 다음/이전 페이지 존재 여부 확인.
- Slice
- **현재 페이지 정보**만 제공하며, **전체 데이터 개수**나 **총 페이지 수**는 알 수 없음.
- 더 적은 리소스를 사용하여 다음 페이지 유무만 판단.
- 반환 메서드: `Slice<T>`
- 주로 무한 스크롤과 같은 경우에 사용.

주요 메서드

- `getContent()`: 조회된 데이터 목록 반환.
- `hasNext()` / `hasPrevious()`: 다음/이전 페이지 존재 여부 확인.
- 객체 그래프 탐색

엔티티 객체 간의 관계를 통해 연관된 데이터를 탐색하거나 로드하는 것.

1. **Lazy Loading (지연 로딩)**:
- 연관된 엔티티를 **실제 사용 시점**에 로드.
- `@OneToMany`, `@ManyToOne` 등에서 기본 설정.
- 성능에 유리하지만, **N+1 문제**가 발생할 수 있음.
2. **Eager Loading (즉시 로딩)**:
- 엔티티를 로드할 때 연관된 엔티티를 **즉시 함께 로드**.
- `@OneToOne(fetch = FetchType.EAGER)`처럼 명시적으로 설정.
- 데이터를 즉시 사용 가능하지만, 불필요한 데이터 로드로 인해 성능 저하 가능.
3. **JPQL 또는 Fetch Join**:
- JPQL에서 `JOIN FETCH`를 사용해 필요한 연관 데이터를 한 번에 로드.
- N+1 문제 해결에 효과적.