작성
·
380
0
안녕하세요 김영한 선생님~!
distinct 관련해서 질문 있습니다.
강의에서 jpa의 distinct는 두가지 기능이 있다고 하셨는데
1. SQL에 distinct 넣어줘서 DB에서 실행
2. 애플리케이션에서 식별자로 distinct 수행.
여기서 애플리케이션에서 식별자로 distinct를 할때, 식별자가 기준이긴하지만 엄밀히 데이터는 다른 데이터인데 어떤 데이터를 버리고 어떤 데이터를 채택하는건가요?
예제에서는 주문(Order)데이터 1개에 OrderItem(주문상품) 데이터 (JPA1, JPA2) 이렇게 2개와 매칭되고 DB입장에서는 데이터가 다르기 때문에 모든 컬럼에 대해 distinct를 하면 2개가 나오는데요,
JPA 입장에서는 식별자 기준으로 distinct를 한다면 저 2개의 데이터 중에 어떤 데이터를 무슨 기준으로 버리고 선택하는건가요?
답변 2
1
안녕하세요. Byunghyun Yoon님
강의 11:19초를 보시면
distinct 적용 전
Order@6cd8116c id=4
Order@6cd8116c id=4
Order@e36f398 id=11
Order@e36f398 id=11
distinct 적용 후
Order@6cd8116c id=4
Order@e36f398 id=11
로 되어 있습니다.
JPA에서 distinct는 이렇게 엔티티 객체가 완전히 동일할 때 중복을 추가로 제거해줍니다.
한번 궁금하신 부분을 실제로 테스트해보시면 딱 이해가 되실거에요.
감사합니다.
0