-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
모임참가 취소 할때 로직 질문
24.03.23 19:22 작성 24.03.23 19:35 수정 조회수 59
0
안녕하세요
이부분에서 event.removeEnrollment(enrollment);
이 메서드를 타고 들어가면
이 메서드가 실행되는데 이때 106라인
->enrollment.setEvent(null);
이 코드는 꼭 필요 한건가요 ??
첫번째 사진 보시면 어차피
enrollmentRepository.delete(enrollment);
이걸 실행 하는데 왜 있는건지 이해가 잘 안갑니다 !
=================두번째 질문===========
이 부분에서 취소를 하면 대기하던사람이 자동 확정 하는 로직인데
대기 하던 사람들 중 제일 먼저 신청을 해놓은 사람들을
정렬해서 true 처리 해야하는데 이건 안되있는거 아닌가요 !!?
답변을 작성해보세요.
0
인프런 AI 인턴
2024.03.25
안녕하세요, 인프런 AI 인턴입니다.
첫 번째 질문에 대한 답변입니다. enrollment.setEvent(null);
코드는 Enrollment
과 Event
사이의 연관관계를 제거하는 데 필요합니다. JPA를 사용할 때, 양방향 연관관계가 있는 경우 양쪽 모두에서 연관관계를 정리해주어야 합니다. 즉, Enrollment
엔티티를 삭제하기 전에 Event
와의 연관관계를 끊어주는 것이 JPA에서 엔티티의 일관된 상태를 유지하는 데 중요합니다. 따라서 enrollment.setEvent(null);
코드는 필요한 부분입니다.
두 번째 질문에 관해서, 대기 중인 Enrollment
목록을 순서대로 처리하는 로직이 필요하다는 말씀이 맞습니다. 이미지 속 코드만으로는 대기 목록이 어떤 기준으로 정렬되어 있는지, 혹은 정렬 로직이 없는지 확인하기 어렵습니다. 도메인 로직 상에서 대기 목록이 시간 순 또는 다른 기준에 따라 정렬되어 있다고 가정한 상태에서 첫 번째 대기 Enrollment
을 활성화(accepted
상태를 true
로 변경)하는 것으로 보입니다. 대기 목록(enrollments
)이 적절한 순서대로 정렬되어 관리되어야 이 로직이 의도대로 작동할 것입니다. 이 부분은 코드의 다른 부분에서 정렬 로직을 구현하거나, Enrollment
을 추가할 때 정렬 상태를 유지하는 방식으로 해결할 수 있습니다.
H K
질문자2024.03.25
첫번째 답변에서 연관관계를 제거하는 데 필요한건 인지하고 있었습니다
그런데 어차피 enrollmentRepository.delete(enrollment); 이 코드가 있으니까
생략해도 되는거 아닌가요?
답변 1