• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

모임참가 취소 할때 로직 질문

24.03.23 19:22 작성 24.03.23 19:35 수정 조회수 59

0

안녕하세요

이부분에서 event.removeEnrollment(enrollment);
이 메서드를 타고 들어가면

이 메서드가 실행되는데 이때 106라인
->enrollment.setEvent(null);
이 코드는 꼭 필요 한건가요 ??

첫번째 사진 보시면 어차피

enrollmentRepository.delete(enrollment);
이걸 실행 하는데 왜 있는건지 이해가 잘 안갑니다 !

 

 

=================두번째 질문===========

이 부분에서 취소를 하면 대기하던사람이 자동 확정 하는 로직인데

대기 하던 사람들 중 제일 먼저 신청을 해놓은 사람들을

정렬해서 true 처리 해야하는데 이건 안되있는거 아닌가요 !!?

 

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.25

안녕하세요, 인프런 AI 인턴입니다.

첫 번째 질문에 대한 답변입니다. enrollment.setEvent(null); 코드는 EnrollmentEvent 사이의 연관관계를 제거하는 데 필요합니다. JPA를 사용할 때, 양방향 연관관계가 있는 경우 양쪽 모두에서 연관관계를 정리해주어야 합니다. 즉, Enrollment 엔티티를 삭제하기 전에 Event와의 연관관계를 끊어주는 것이 JPA에서 엔티티의 일관된 상태를 유지하는 데 중요합니다. 따라서 enrollment.setEvent(null); 코드는 필요한 부분입니다.

두 번째 질문에 관해서, 대기 중인 Enrollment 목록을 순서대로 처리하는 로직이 필요하다는 말씀이 맞습니다. 이미지 속 코드만으로는 대기 목록이 어떤 기준으로 정렬되어 있는지, 혹은 정렬 로직이 없는지 확인하기 어렵습니다. 도메인 로직 상에서 대기 목록이 시간 순 또는 다른 기준에 따라 정렬되어 있다고 가정한 상태에서 첫 번째 대기 Enrollment을 활성화(accepted 상태를 true로 변경)하는 것으로 보입니다. 대기 목록(enrollments)이 적절한 순서대로 정렬되어 관리되어야 이 로직이 의도대로 작동할 것입니다. 이 부분은 코드의 다른 부분에서 정렬 로직을 구현하거나, Enrollment을 추가할 때 정렬 상태를 유지하는 방식으로 해결할 수 있습니다.

H K님의 프로필

H K

질문자

2024.03.25

첫번째 답변에서 연관관계를 제거하는 데 필요한건 인지하고 있었습니다

그런데 어차피 enrollmentRepository.delete(enrollment); 이 코드가 있으니까

생략해도 되는거 아닌가요?