orderItem 에 조건을 주려면 어떻게해야하나요?
영한님 안녕하세요~
주문 조회 V3.1: 엔티티를 DTO로 변환 - 페이징과 한계 돌파
강습을 보고 질문드립니다.
강좌처럼 in 절을 날리면서 데이터를 한번에 가져올때에는 지연로딩을 통해 orderItem 컬렉션을 가져오는데
막상 orderitem에 조건을 주려면 어떻게해야하나요?
애플리케이션(java)에서 작업해야하나요?
답변 1
7
안녕하세요. deutech-labs님^^ 좋은 질문입니다.
우선 엔티티는 연관된 엔티티를 조회하면 항상 데이터베이스와 데이터 수가 일치해야 합니다. 이것을 더 정확히 표현하면 메모리의 엔티티와 데이터베이스간에 불일치가 발생하면 안됩니다.
order에서 지연로딩을 통해서 orderItem을 가져올 때도 마찬가지 입니다. orderItem 조회 쿼리에서 추가조건이 들어가면 orderItem의 일부 row가 필터링 됩니다. 결국 order->orderItem 연관관계 사이에 불일치가 발생합니다.
예를 들어서 데이터베이스는 order A와 연관된 orderItem은 5개인데, 메모리에 올렸더니 order A와 연관된 orderItem은 3개라면 불일치 문제가 발생하는 것이지요.
엔티티의 연관관계는 이런 불일치가 발생하면 안됩니다.
그러면 문제를 어떻게 해결하면 될까요?
order를 조회한 다음에 orderItem에 조건을 준 원하는 쿼리를 직접 작성해서 바로 DTO로 변환하면 됩니다.
(결국 수동으로 해야합니다.)
관련해서 성능 최적화 까지 고려한 내용이 V4, V5, V6에 쭉 이어져서 나옵니다^^
쭉 보시고 또 궁금한 점은 말씀주세요.
강의 관련 외 질문입니다.
0
65
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
0
86
1
BeanCreationException
0
86
3
Update 후 UpdateMemberResponse 매핑할 때
0
46
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
98
2
페이징 + 검색조건 관련해서 질문드립니다.
0
70
1
Query Dsl Q파일 질문입니다.
0
82
1
루트 쿼리라는것은
0
58
1
메서드를 분리하는 기준
0
62
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
108
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
83
2
fetch join과 영속화와 OSIV의 관계
0
84
2
Distinct 사용 전 결과에 대한 의문
0
113
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
56
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
78
2
dto 필드 속 엔티티 여부
0
58
1
뷰템플릿 사용 시
0
76
2
Result 클래스 관련 질문
0
56
1
@PostConstruct 프록시 관련 질문드립니다
0
85
1
DTO 대신 Form 사용은 안되나요?
0
133
1
OSIV ON 상태일 때
0
95
1
fetch join VS fetch join 페이징 궁금증
0
179
2
양방향 연관관계 알아보는 법?
0
104
1
16강 17강 간단 정리 이게 맞을까요 ?
0
165
2





