@BatchSize 연관된 엔티티를 조회할 때 지정한 size 만큼 where 조건의 in 절으로 조회한다. 1:N 관계의 Entity 정의 정의 조건 : 1명의 멤버는 여러 개의 주문을 가질 수 있다. Members (1) : Orders (N) * 부모 class : Members @Entity class Members( @Column(nullable = false, length = 50) var email: String, @Column(nullable = false, length = 20) var name: String, ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null @OneToMany(mappedBy..
에러 메세지 org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags: [com.beside.backend.domain.entitiy.wisesaying.WiseSaying.emotionWiseSayingsWords, com.beside.backend.domain.entitiy.wisesaying.WiseSaying.wiseSayingBookmark]; nested exception is java.lang.IllegalArgumentException: org.hibernate.loader.Mult..
1 : N 관계에서 Fecth Join 사용시 발생하는 MultipleBagFetchException 해결법 1. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 2. 1:N 관계의 Collection Entity는 Lazy Loading(지연 로딩)으로 조회한다. 3. Lazy Loading(지연 로딩) 성능 최적화를 위해 hibernate.default_batch_fetch_size를 적용한다. * QueryDsl 에서도 1:N 관계에서 단 한번의 fetch join 사용해야 하는 건 똑같다. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 연관관계에서 자식 테이블인 ToOne 관계에서는 row 수를 증가시키지 않는다. 따..
N+1 문제 : 조회된 부모의 수만큼 자식 테이블의 쿼리가 추가 발생하는 현상 연관 관계가 설정된 엔티티를 조회할 경우에 발생하는 문제 쿼리를 날렸을 때 의도하지 않은 쿼리가 N번 추가로 실행되는 것을 N+1이라고 한다. 해결방법 : FetchJoin * Join, Fetch Join 차이점 Join - 연관 Entity에 Join을 걸어도, 실제 쿼리에서 SELECT 하는 Entity는 오직 JPQL에서 조회하는 주체가 되는 Entity만 조회하여 영속화 - 조회의 주체가 되는 Entity만 SELECT 해서 영속화하기 때문에 데이터는 필요하지 않지만, 연관 Entity가 검색조건에는 필요한 경우에 주로 사용됨 Fetch Join - 데이터를 가져올 때 조회의 주체가 되는 Entity 이외에, Fetc..
- Total
- Today
- Yesterday
- Java
- Git
- 추상클래스
- ChatGPT
- 오블완
- Spring Security
- bucket4j
- redisson 분산락
- 자바 어플리케이션 실행 과정
- port
- spring boot 3
- 티스토리챌린지
- 스프링오류
- FetchJoin
- jvm warm-up 전략
- junit5
- checkout
- dto 클래스 생성자
- array
- Kotlin
- QueryDSL
- n+1
- 스프링 스케줄링
- addFilterBefore
- MongoDB
- Linux
- Cannot construct instance of
- JPA
- MultipleBagFetchException
- 배열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |