인프런 커뮤니티 질문&답변
참여자 검증 로직 질문있습니다.
작성
·
116
1
7:30 초 부터
chatParticipantRepository.findByChatRoom()
메서드로 조회한 다음에
특정 멤버와 같은지 for문으로 검증하셨는데
chatParticipantRepository.findByChatRoomAndMember()
여기 만들어 둔 메서드를 활용하지 않고 위 로직을 사용하신 이유가 있을까요?
답변 2
0
안녕하세요.
코드 전반에서 jpa를 충분히 활용할수 있음에도 활용하지 않은 부분들이 있는데, jpa사용이 익숙치 않은 수강생들을 고려한 측면이 있습니다. 이 부분 먼저 양해 부탁드립니다.
그런데, 이 부분은 제가 이미 메서드를 만들어 놨음에도 활용하지 않았으니, 다소 일관성이 떨어지게 코딩을 한것 같습니다.
ChatParticipant participant = chatParticipantRepository.findByChatRoomAndMember(chatRoom, member)
.orElseThrow(() -> new IllegalArgumentException("본인이 속하지 않은 채팅방입니다."));말씀하신대로 findByChatRoomAndMember 메서드를 만들어 뒀으니 이 메서드를 활용하는게 더 깔끔해 보입니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김아현님.
채팅 서비스 구현에서 chatParticipantRepository.findByChatRoomAndMember() 메서드를 직접 사용하지 않고, for문을 통해 검증하는 방식을 선택한 이유에 대해 궁금하신 것 같습니다. 이러한 선택에는 몇 가지 이유가 있을 수 있습니다.
코드의 명료성 및 가독성:
- 특정 상황에서는 반복문을 통해 명시적으로 검증 로직을 작성하게 되면, 코드의 흐름이 명확하게 드러나고, 해당 로직을 쉽게 이해할 수 있게 됩니다. 이는 특히 해당 부분에서 추가적인 검증이나 부가 로직이 필요할 때 유용합니다.
- 특정 상황에서는 반복문을 통해 명시적으로 검증 로직을 작성하게 되면, 코드의 흐름이 명확하게 드러나고, 해당 로직을 쉽게 이해할 수 있게 됩니다. 이는 특히 해당 부분에서 추가적인 검증이나 부가 로직이 필요할 때 유용합니다.
확장성:
- 직접 반복문을 사용하는 방식은 추후 로직의 변경이나 추가가 용이합니다. 만약 특정 멤버와의 비교 외에도 다른 조건들이 필요하게 되면, 기존에 작성된 코드를 간단히 확장하여 사용할 수 있습니다.
- 직접 반복문을 사용하는 방식은 추후 로직의 변경이나 추가가 용이합니다. 만약 특정 멤버와의 비교 외에도 다른 조건들이 필요하게 되면, 기존에 작성된 코드를 간단히 확장하여 사용할 수 있습니다.
구현 초기 단계:
- 프로젝트 초기 단계에서는 복잡한 쿼리 메서드보다는 직접적인 로직 구현으로 시작한 후, 나중에 성능 최적화나 코드 정리가 필요할 때 이를 리팩토링하는 경우가 많습니다. 이는 Iterator 방식이 디버깅에 유리하도록 할 수도 있습니다.
- 프로젝트 초기 단계에서는 복잡한 쿼리 메서드보다는 직접적인 로직 구현으로 시작한 후, 나중에 성능 최적화나 코드 정리가 필요할 때 이를 리팩토링하는 경우가 많습니다. 이는 Iterator 방식이 디버깅에 유리하도록 할 수도 있습니다.
혹시 프로젝트 설계 상의 특별한 이유가 있을 수도 있으니, 여러분의 요구사항에 맞추어 구체적인 로직을 구성해 보시길 추천드립니다.
이와 관련된 질문으로 비슷한 상황을 다룬 게시물을 참고하실 수 있습니다:
- Hibernate/JPA에서의 컬렉션 검증 방식 - 반복문 사용 시의 이점 및 주의점
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






감사합니다