
본 시리즈는 작성자의 이해와 경험을 바탕으로 실습 위주의 설명을 기반으로 작성되었습니다.
실습 위주의 이해를 목표로 하기 때문에 다소 과장이 많고 생략된 부분이 많을 수 있습니다.
따라서, 이론적으로 미흡한 부분이 있을 수 있는 점에 대해 유의하시기 바랍니다.
또한, SpringBoot 기반의 Backend 위주의 설명을 포함하고 있으니
Frontend 에 대해서는 별도로 참고자료를 찾아보시기를 권장드립니다.
JPA Repository를 활용한 Repository(DAO)를 구현합니다.
ChatRoomRepository와 ChatMessageRepository로 구분합니다.
ChatRoomRepository: ChatRoom과 관련된 Database 데이터 처리ChatMessageRepository: ChatMessage와 관련된 Database 데이터 처리
JPA 사용을 위해 build.gradle의 dependencies 항목에 다음과 같이 추가합니다.
// build.gradle
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
public interface ChatRoomRepository extends JpaRepository<ChatRoom, Long> {
/** ChatRoom 조회 - RoomName 검색, 정확히 일치 */
ChatRoom findByRoomName(String roomName);
/** ChatRoom 목록조회 - 기본정렬순, RoomName 검색, 정확히 일치 */
List<ChatRoom> findAllByRoomName(String roomName);
/** ChatRoom 목록조회 - 조건정렬순, RoomName 검색, 정확히 일치 */
List<ChatRoom> findAllByRoomName(String roomName, Sort sort);
/** ChatRoom 목록조회 - 기본정렬순, RoomName 검색, 포함 일치 */
List<ChatRoom> findAllByRoomNameContaining(String roomName);
/** ChatRoom 목록조회 - 조건정렬순, RoomName 검색, 포함 일치 */
List<ChatRoom> findAllByRoomNameContaining(String roomName, Sort sort);
}
JPA Repository를 상속받은 InterfaceJPA Repository를 활용한 기본적인 형태의 5개 메소드 구현
본 프로젝트에서 사용되지 않는 메소드도 있을 수 있음, 단순 참고
findByRoomName(String roomName):
- 단일
RoomName검색, 정확히 일치findAllByRoomName(String roomName):
- 기본정렬순,
RoomName검색, 정확히 일치findAllByRoomName(String roomName, Sort sort):
- 조건정렬순,
RoomName검색, 정확히 일치findAllByRoomNameContaining(String roomName):
- 기본정렬순,
RoomName검색, 포함 일치findAllByRoomNameContaining(String roomName, Sort sort):
- 조건정렬순,
RoomName검색, 포함 일치
interface ChatMessageRepository extends JpaRepository<ChatMessage, Long> {
/** ChatMessage 목록조회 - 기본정렬순, ChatRoom 검색 */
List<ChatMessage> findAllByChatRoom(ChatRoom chatRoom);
/** ChatMessage 목록조회 - 조건정렬순, ChatRoom 검색 */
List<ChatMessage> findAllByChatRoom(ChatRoom chatRoom, Sort sort);
/** ChatMessage 검색조회 - 기본정렬순, Message 검색 */
List<ChatMessage> findAllByMessageContaining(String message);
/** ChatMessage 검색조회 - 조건정렬순, Message 검색 */
List<ChatMessage> findAllByMessageContaining(String message, Sort sort);
}
JPA Repository를 상속받은 InterfaceJPA Repository를 활용한 기본적인 형태의 4개 메소드 구현
본 프로젝트에서 사용되지 않는 메소드도 있을 수 있음, 단순 참고
findAllByChatRoom(ChatRoom chatRoom): 기본정렬순, ChatRoom 검색findAllByChatRoom(ChatRoom chatRoom, Sort sort): 조건정렬순, ChatRoom 검색findAllByMessageContaining(String message): 기본정렬순, Message 검색findAllByMessageContaining(String message, Sort sort): 조건정렬순, Message 검색
실시간 채팅과 관련하여 JPA Repository를 활용하여
Database Data 처리를 위한 Repository 구현인
ChatRoomRepository, ChatMessageRepository 구현이 끝났습니다.
다음 시간에는 지금까지 구현한 Entity, DTO, Repository를 활용해
실질적인 기능을 구현하는 Service를 구현해보도록 하겠습니다.
본 시리즈는 SpringBoot 기반의 WebSocket, STOMP 실시간 채팅기능 구현을 목표로
최근 트렌드와 함께 WebSocket, STOMP의 정형화된 기초개념을 정립하기 위해 작성되었습니다.
WebSocket을 찾아 헤매는 모든 이들에게 이 글을 바칩니다.
본 시리즈는 작성자의 이해와 경험을 바탕으로 실습 위주의 설명을 기반으로 작성되었습니다.
실습 위주의 이해를 목표로 하기 때문에 다소 과장이 많고 생략된 부분이 많을 수 있습니다.
따라서, 이론적으로 미흡한 부분이 있을 수 있는 점에 대해 유의하시기 바랍니다.
또한, SpringBoot 기반의 Backend 위주의 설명을 포함하고 있으니
Frontend 에 대해서는 별도로 참고자료를 찾아보시기를 권장드립니다.