해결된 질문
작성
·
86
·
수정됨
0
안녕하세요 선생님,
섹션6. 메시지 읽음처리, 채팅방 나가기, 11분 25초 쯤에 findByChatRoomAndMember(chatRoom, member); 코드로 모든 readStatus를 가져와서 읽음 처리를 하는 것으로 보입니다.
읽지 않음 상태의 readStatus만 가져와서 읽음 상태로 바꿔주어도 상관이 없을까요 ?
좋은 강의 정말 감사합니다.
답변 2
1
안녕하세요 태우님. 네 그렇게 해주시는게 성능상 더 유리할것 같습니다. 제가 코드의 복잡도를 줄이려고 처리하지 않은 부분들을 추가적으로 더 찾아서 개선하시면 추후에 레퍼런스로 쓰시기 좋은 코드가 될것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김태우님.
김태우님께서 질문하신 findByChatRoomAndMember(chatRoom, member); 메서드를 통해 모든 readStatus를 가져와서 읽음 처리를 하는 것과 관련하여, 읽지 않음 상태의 readStatus만 가져와도 되는지에 대한 물음을 주셨네요.
일반적으로 읽음 처리를 최적화하려면 ‘읽지 않음’ 상태의 readStatus만 선택적으로 가져와 상태를 변경하는 것이 더욱 효율적일 수 있습니다. 이렇게 하면 데이터 전송량을 줄일 수 있고, 데이터베이스의 부하를 줄이는 효과를 얻을 수 있습니다. 읽지 않은 메시지가 있다면, 이를 별도로 필터링하는 JPQL 쿼리를 사용하여 상태를 업데이트하면 됩니다.
다음은 ‘읽지 않음’ 상태의 메시지만 선별적으로 가져와 상태를 변경하는 방식의 예입니다:
- JPQL로 조건에 맞는 메시지 필터링:
@Query("SELECT m FROM Message m WHERE m.chatRoom = :chatRoom AND m.member = :member AND m.readStatus = false")
List<Message> findUnreadMessages(@Param("chatRoom") ChatRoom chatRoom, @Param("member") Member member);
다만, 구현의 목적과 설계에 따라 모든 메시지를 가져와 처리하는 경우가 더 적합할 수도 있습니다. 이는 서비스의 요구사항과 성능 고려사항에 의해 결정됩니다.
이와 관련된 추가 정보는 다음 링크를 통해 확인하실 수 있습니다:
- JPA를 활용한 조건부 데이터 조회 및 업데이트 - 유사한 조건 필터링 및 상태 변경 구현에 대한 논의
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
빠른 답변 감사드립니다 !.