인프런 커뮤니티 질문&답변

Aura님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

OSIV와 성능 최적화

Querydsl4RepositorySupport 관련 질문을 드립니다.

해결된 질문

작성

·

240

1

안녕하세요. 영한님
 
영한님의 jpa로드맵 완주에 다가가고 있는 수강생입니다.
영한님의 강의가 정말 도움이 많이 되고 있습니다.
 
다름이 아니라 강의들고 관계없이..
 
영한님이 만드셨다는 Querydsl4ReposotirySupport에 관해
 
질문드려도 괜찮은지 궁금합니다..
 
p6spy로 로깅할때
Querydsl4RepositorySupport에서 실행되는 쿼리들은
파라매타가 바인딩 되지 않고 ?로 남아있고
 
jpaReposotry에서 수행된 쿼리들은
정상적으로 파라메타가 바인딩 되서 보여집니다.
 
이에 제가 더 추가적으로 설정해야할 부분이 있는 것인지
아니면 support리파짓토리를 상속받아서 사용할 때는
 
p6spy로 파라매타 로깅이 현재는 안되는건지 궁금합니다.
 
감사합니다.
 
코로나 조심하세요. 영한님

답변 1

0

Aura님의 프로필 이미지
Aura
질문자

이미 질문의 답이 올라와있군요..

https://www.inflearn.com/questions/78776

 

항상 수고하십니다. 

즐거운 하루되십시오.^^

김영한님의 프로필 이미지
김영한
지식공유자

네 잘 찾으셨습니다^^

Aura님의 프로필 이미지
Aura
질문자

감히 의심해서 죄송합니다..

영한님의 jpa로드맵강의도 다 들어서.. 어느 편에서 말씀하셨는지 까지는 기억이 안나는데요.

거의 대부분의 update를 

save로 하신다고 언급하셨던 것으로 기억합니다. (제 기억이 맞다면요..)

 

저도 어드민 같은 경우는 save로  최근에 개발을 했는데요.

서비스에는 save를 쓰기보다.. 직접 querydsl 로.update쿼리를 날리는게 좋다고 생각이 ... 들더라구요 ㅠㅠ

 

실제로 어드민 시스템이 아닌곳에서도 (예: 배민앱 API과 같이 트레픽이 많은 서비스) 실제로 entity만 감지해서 save로 진행하는지 궁금합니다..

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. thham님

데이터 변경에 대해서 궁금하신 것이군요.

활용1편에 상품 수정, 변경 감지와 병합 부분을 다시 한번 복습해주세요^^!

그리고 대량의 데이터를 변경할 때는 직접 update하는 것이 맞습니다.(벌크 연산)

감사합니다.

Aura님의 프로필 이미지
Aura
질문자

안녕하세요 영한님.

말씀하신 활용1편 상품수정, 변경감지 쪽 강의를 다시 복습했습니다.

 

다만 아직도 변경감지를 위해 select 후 update 두번의 connection이 이루어지는게 의문입니다.

 

준영속상태의 객체일경우 결국 id로 findone 으로 영속성태로 만들고 값을 셋팅하고

변경감지만으로 update를 한다 혹은 머지를 이용한다.

 

하지만 이렇게 하면 결국 하나의 사용자 request가 select,update 두번의 db요청을 보내는 것인데..

이럴 경우 update 하나만 요청하는게 더 유리한게 아닌지 여쭙는 것이었습니다.

 

위 답변에서 말씀하신 대량의 데이터를 변경할 때 직접 update하는게 맞다고 하셨는데요.

 

말 그대로 대량의 데이터를 처리하는 것 뿐만 아니라

트래픽이 많이 일어나는 서비스에도 직접 update하는게 맞다고 말씀하신걸로 이해하면 됩니까??

 

계속 같은 질문을 하고있는 것 같아 죄송합니다.

말씀하신 활용1편 변경감지 여러번 돌려봤지만.. 더 돌려보겠습니다.

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. thham님

어떤 질문인지 이해가 되었습니다.

당연히 생각하신 것 처럼 update만 하는 것이 성능에는 더 나은 선택입니다.

그런데 성능에 대한 부분은 암달의 법칙이라는 것이 중요합니다.

전체 애플리케이션에서 실제 병목이 되는 부분을 최적화해야 최적화가 되는 것이지요.

비즈니스 상황에 따라서 다르겠지만, PK를 기반으로 데이터를 조회하는 것은 성능에 영향을 거의 주지 않습니다. 실제 영향을 주는 것은 복잡한 조회 쿼리나 대량의 배치 쿼리들이 영향을 주게 되는 것이지요.

실제 JPA를 사용하는 대부분의 회사에서는 select , update를 기본으로 사용합니다. 그리고 정말 성능 최적화가 꼭! 필요한 곳에서만 벌크연산(update만 처리)을 사용해서 update합니다.

감사합니다.

Aura님의 프로필 이미지
Aura
질문자

안녕하세요 영한님ㅎ

항상 이시간쯤.. 답글을 주시더라구요 'ㅅ'..  

저도 이제 말씀하신 부분들이 명확하게 이해되었습니다.

암달의 법칙을 말씀해주시니 더욱 이해가 쏙 들어오고,

그동안 제가 작은 포인트에 많은 공을 들인게 아닌지 생각하게 되네요 ㅎㅎ

저도 앞으로 변경감지를 잘 써보겠습니다 ㅎㅎ

 

언제나 좋은 강의 감사합니다.!!

질문 해결처리 하겠습니다.

Aura님의 프로필 이미지

작성한 질문수

질문하기