묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨
[Spring JPA] .save() 대해 문의 드립니다.
4개의 테이블 (a, b, c, d)각각 1:N 관계 입니다. a-b 1:N, b-c 1:N , c-d 1:N (fetchType = LAZY)네개의 테이블에 대한 정보를 fetchjoin을 통해서List<a> 객체로 리턴 받았습니다. List<a> 객체를 루프를 돌면서 a 객체 값에 특정 필드를 변경하고 .save()를 호출 했더니update 쿼리만 나가는게 아니고1) a 테이블의 id(pk)값의 조건 select 쿼리 1회 2) b 테이블 조건절에는 id(FK) select 쿼리 1회3) 위에서 값이 조회될경우 c테이블에 b테이블 결과 id(PK) 값들로 IN 쿼리 1회4) d 테이블 3)과 동일한 구조로 IN쿼리 1회 5) 최종 udpate 쿼리 호출이런식의마치 해당 a 객체 전체 데이터(하위 포함)를 조회 했을떄 날라가는 select쿼리가 모두 호출 되었습니다. 예)List<a> result = aRepository.getFetchJoinQuery();result.stream().forEach(a -> { a.setName("HOON"); aRepository.save(a); -> 해당 시점 위 쿼리 호출됨 logger.info("xxxxxx");}); 디버깅으로 확인한 내용이구요,혹시나 디버깅 모드에서 데이터 확인중에 날아간 쿼리인가 해서 디버깅없이 RUN으로실행했을때도 동일하게 쿼리가 발생하는것이 확인 되었습니다.. save() 사용시에 select 쿼리 발생은 어쩔수 없는걸까요?어쩔수 없다면 save() 메서드 대신 그냥 JPQL로 update 쿼리를 작성해서 사용하는 방법뿐이 없을까요?궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 질문 드립니다
안녕하세요 강의를 듣다가 연관관계와 관련해서 질문이 있어 여쭤봅니다 만약 id(pk값) 이 4 인 Order의 OrderItem 리스트에서 count가 5인 값만 가지고 온다고 하면 이걸 가져올 수 있는 방법이 있을까요??