Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- ㅅ
- Stack
- insertion sort
- 윤성우 열혈자료구조
- JSON
- Serialization
- buffer
- list 컬렉션
- C 언어 코딩 도장
- 이것이 자바다
- s
- 알기쉬운 알고리즘
- Selection Sorting
- 메모리구조
- C programming
- Algorithm
- stream
- R
- Graph
- 혼자 공부하는 C언어
- 윤성우의 열혈 자료구조
- coding test
- datastructure
- 이스케이프 문자
Archives
- Today
- Total
Engineering Note
[JPA] JPA 활용 주의점과 사용팁 본문
Entity를 화면, API에 직접 노출 하지 않는다.
화면에 노출하지 않기 위해서는 조회한 Entity를 DTO로 변환하는 로직은 필수로 존재한다.
N+1 문제는 지연로딩으로 설정된 엔티티를 개별적으로 조회할 때 발생한다. 조회한 엔티티가 List였고 필드로 지연로딩 설정된 연관관계 엔티티가 있다면 필드를 채우기 위해 추가 쿼리가 수행된다.
만약 연관관계 엔티티도 컬렉션이라면 다시 리스트 요소만큼 더많은 추가쿼리가 실행된다.
N+1 문제를 막기위해 fetch join으로 지연로딩이 아니라 한 번에 조회를 통해 데이터를 가져온다.
하지만 컬렉션 연관관계 엔티티는 fetch join 적용시 페이지네이션이 적용되지 않는다. 이를 해결하기 위해서는 일대일 연관관계 엔티티는 fetch join으로 데이터를
조회하고 컬렉션 엔티티는 지연로딩으로 데이터를 조회하되 batchsize를 적용해 지연로딩 성능문제를 해결한다.(batch size 적용시 부모 엔티티의 pk를 기준으로 where in 조건절이 적용된다.)
화면에 맞춘 데이터를 조합해야해서 복잡한 조인을 사용해야하는 경우 DTO로 직접 조회한다.
'Server > JPA ORM' 카테고리의 다른 글
| [JPA] JPA에서 연관관계가 맺어진 객체를 비교(eq)하는 것은, 실제 DB에서는 그 객체의 'ID(PK) 값'을 비교하는 것과 완전히 동일하다. (0) | 2026.01.14 |
|---|---|
| [JPA] 영속성 전이 옵션과 연관관계 편의 메서드가 필요한 이유, 고아객체 설정 (1) | 2026.01.10 |
| [JPA] 컬렉션 Fetch Join 페이지네이션 문제와 해결책 (0) | 2025.12.29 |
| [JPA] Repository로 동시성 테스트하면 안 되는 이유 (0) | 2025.12.24 |
| [JPA] Spring Data JPA Query Method 네이밍 규칙 (0) | 2025.12.23 |
Comments