Closed Inderby closed 8 months ago
게다가 더욱 이상한 점은 debugging 모드를 이용해 article을 수정하는 과정을 디버깅할 땐 정상적으로 수정이 됩니다
업데이트 로직이 실행된 이후에 db에 기록이 반영되지 않은 이유를 설명해주신 내용만으로는 유추하기 어렵습니다.
강의와 코드를 보시면 아시겠지만, jpa를 올바르게 사용한 코드에서 flush()
는 필요하지 않습니다.
'안되길래 flush()
를 써도 안됐다' 는 말씀부터가, 정확한 원인은 모른채 일단 되게 하겠다는 마음으로 접근하신 것이 아닐지요?
flush()
쓰면 된다고 하는 정보를 얻어서 무작정 붙여보기보다는, 안되는 이유를 알아내는 것이 더 중요합니다.
특수한 상황에서 flush()
가 업데이트에 관여할 수는 있으나, flush()
는 엔티티 정보의 업데이트와는 기본적으로 관련이 없습니다.
Lazy loading 이 의심된다면, 엔티티를 불러온 직후부터 트랜잭션이 끝나기 전까지 엔티티 데이터에 접근하는 코드가 제대로 활용되고 있는지를 잘 관찰해보시는 것이 좋을 것 같습니다.
넵 코멘트 남겨주셔서 감사합니다. 근본적인 원인을 찾아서 현재 해결한 상태입니다.
우문현답 감사합니다 ! ㅠㅠ
강의를 보며 코드를 따라 구현하는 도중
제 서비스에서는 updateArticle과 관련하여 db의 데이터가 변경되지 않는 문제점을 발견했습니다. 분명 변경점에 대한 파라미터가 분명히 들어갔고, articleRepository.flush()까지 했지만 데이터 베이스에는 이에 대한 반영이 들어가지 않고 수정 이전의 값만 출력됩니다.
findById()를 이용하였을 때 정상적으로 수정되는 것으로 보아 getReferenceId()의 lazyLoading과 관련하여 문제로 보이는데 혹시 짐작되시는 문제점에 대해 조언 해주실 수 있을까요?