작성
·
381
0
예제 소스에서 update 기능에서 단순히 set메서드만 수행하면 DB에 저장이 되지 않는거 같습니다.
repository.save까지 호출해야 되는게 아닌지요?
Item findItem = repository.findById(itemId).orElseThrow();
findItem.setItemName(updateParam.getItemName());
findItem.setPrice(updateParam.getPrice());
findItem.setQuantity(updateParam.getQuantity());
repository.save(findItem);
답변 1
1
안녕하세요. 김태경님, 공식 서포터즈 OMG입니다.
JPA는 변경감지란 기술로 필드만 수정해도 별도의 save()없이 값이 수정됩니다.
save()하지 않더라도 수정이 되어야 할텐데, 강의와 다르게 진행하신 부분이 있지 않나 예상합니다.
강의에서 제공해드리는 프로젝트 코드를 실행하여 확인해보시겠어요?
-
영한님의 JPA 활용1편 강의자료 일부 첨부합니다.
도움이 되는 부분은 코드가 작성된 부분과, 아래의 설명입니다.
update() 메서드의 구현코드를 보면 save()가 없으며 설명에도 나와있듯 "변경감지가 동작해서 Update SQL이 실행된다"를 확인해주세요 :)
감사합니다.
빠른 댓글 감사드립니다. 다시 확인해보니 @Transactional 을 빼놓아서 그랬네요. @Transactional을 빼면 디폴트로 autocommit으로 동작할거라 생각했는데, JPA에서는 아예 반영이 안되는군요.