XToMany 조회에 대해 알아보자.
일대다에서 컬렉션 조회 할 때 1쪽에서 join해서 조회 할 때 다 쪽이 3개면 결과가 3개로 뻥튀기 되서 나옴.
===== v1.
무한반복된다. (@JsonIgnore 과 hibernate5Module 도 없는 상태.
저걸 빈으로 등록하면 프록시객체가 들어있는 건 무시하고 정상적으로 데이터가 로딩 된 애들만 API로 반환이 된다.
이런 식으로 된다. 간단조회 v1 에서 했던것.
밑 두줄은 List 이므로 forEach 돌면서 getName으로 강제 초기화 해줌.
o.getItem() 한 이유 :
OrderItem 의 Item 까지 초기화 하기 위함. .getName 할 때 Item에 실제 값이 들어감.
이 때 강제초기화 한 이유 :
얘가 프록시인 애는 데이터를 안 뿌림 -> 초기화되어있으면(=실제 객체 들어있으면) 값을 뿌림.
물론 지금도 양방향 관계는 한쪽에 @JsonIgnore 걸려있음. ( 양방향일 떄는 무조건 걸어라! )
이렇게 출력된다. 엔티티 보면서 읽으면 편함.
=> 다음시간 DTO로 바꾸자! (쉽진 않다. ORderItem, OrderItem안의 Item 까지 DTo로 바꿔야함.)
'Java, Spring > 스프링부트와 JPA 활용 2' 카테고리의 다른 글
4-3. 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 (1) | 2022.09.09 |
---|---|
4-2. 주문조회V2:엔티티를 DTO로 변환 (0) | 2022.09.09 |
3-4. 간단주문조회V4 : JPA에서 DTO로 바로 조회(매우매우매우매우매우매우매우매우매우매우매우 중요) (0) | 2022.09.09 |
3-3. 간단주문조회V3 : 페치조인 최적화 (0) | 2022.09.09 |
3-2. 간단주문조회V2 : 엔티티를 DTO로 변환 (0) | 2022.09.09 |