인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

이호경님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 서비스 개발

주문취소문의

작성

·

38

0

주문취소 부분에 cancel()을 실행하면 왜 db업데이트가 되는지 이해가잘안갑니다 .

주문을 저장할때처럼 엔티티매니저에서 persist를 해주어야 commit되는게 아닌가요 ?

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 이호경님.

JPA에서는 엔티티의 상태 변화가 감지될 경우 자동으로 데이터베이스에 반영하는 변경 감지(dirty checking)라는 기능이 지원됩니다. 주문 취소 로직에서 cancel() 메서드를 호출하면, 그 내부에서 엔티티의 상태가 변경됩니다. 해당 엔티티가 영속성 컨텍스트 내에 존재하고 트랜잭션이 활성화된 상태라면, JPA는 트랜잭션이 커밋될 때 자동으로 변경 사항을 데이터베이스에 반영하게 됩니다. 이를 위해 명시적으로 persist()를 호출할 필요가 없습니다.

더 자세한 정보를 원하시면, 다음의 유사한 질문 및 답변을 참고해 주세요:
- “JPA 특징 중 자동 업데이트 관련”
- “주문취소 로직이 이해가 안됩니다.”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.