작성
·
38
0
주문취소 부분에 cancel()을 실행하면 왜 db업데이트가 되는지 이해가잘안갑니다 .
주문을 저장할때처럼 엔티티매니저에서 persist를 해주어야 commit되는게 아닌가요 ?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 이호경님.
JPA에서는 엔티티의 상태 변화가 감지될 경우 자동으로 데이터베이스에 반영하는 변경 감지(dirty checking)라는 기능이 지원됩니다. 주문 취소 로직에서 cancel()
메서드를 호출하면, 그 내부에서 엔티티의 상태가 변경됩니다. 해당 엔티티가 영속성 컨텍스트 내에 존재하고 트랜잭션이 활성화된 상태라면, JPA는 트랜잭션이 커밋될 때 자동으로 변경 사항을 데이터베이스에 반영하게 됩니다. 이를 위해 명시적으로 persist()
를 호출할 필요가 없습니다.
더 자세한 정보를 원하시면, 다음의 유사한 질문 및 답변을 참고해 주세요:
- “JPA 특징 중 자동 업데이트 관련”
- “주문취소 로직이 이해가 안됩니다.”
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.