본 시리즈는 작성자의 이해와 경험을 바탕으로 실습 위주의 설명을 기반으로 작성되었습니다.
실습 위주의 이해를 목표로 하기 때문에 다소 과장이 많고 생략된 부분이 많을 수 있습니다.
따라서, 이론적으로 미흡한 부분이 있을 수 있는 점에 대해 유의하시기 바랍니다.
또한, 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 에 대해서는 별도로 참고자료를 찾아보시기를 권장드립니다.