[Spring Boot] 몽고DB(mongo DB) 사용기

JO Yeongmu·2024년 3월 21일
0
post-thumbnail



☘️ Atlas 컬렉션 생성

예시로 저는 chatting_data라는 컬렉션을 만들었습니다.



☘️ spring boot 의존성

의존성은 총4개 정도 간단하게 구성해주었습니다.

  • Spring Web
  • Spring Data MongoDB
  • Lombok
  • Validation



☘️ application.yml

  • uri 부분은 Atlas에서 간단하게 확인할 수 있습니다.
sever:
  port: 8080

spring:
  data:
    mongodb:
      uri: mongodb+srv://[아이디]:[비밀번호]@[클러스터].mongodb.net/[데이더베이스 이름]
  • Connect로 진입합니다.

  • Drivers를 선택합니다.

  • java를 선택하시면 아래에서 확인 할 수 있습니다.



☘️ Spring boot로 mongoDB 조회하기

  • 간단한 data를 insert 해줍니다.

오른쪽 상단의 Insert Document를 누르면 간단하게 Json형식으로 데이터를 insert 할 수 있습니다.


⚙️ Entity

@Document(collection = "chatting_data") // 실제 몽고 DB 컬렉션 이름
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class ChattingEntity {
    @Id
    private Long id;
    private String name;

    @Field(name = "room_no")
    private int roomNO;

}

id, 이름, 채팅방번호 3개의 필드를 가지도록 구성했습니다.


⚙️ Dto

@Getter
@Setter
public class ChattingResDto {
    private String name;
    private int roomNO;

    public ChattingResDto(String name, int roomNO) {
        this.name = name;
        this.roomNO = roomNO;
    }
}

조회할 데이터를 dto로 정의 해두었습니다.

@Data
public class ResponseDto<T> {

    private boolean success;
    private int status;
    private String code;
    private String message;
    private T response;


    @Builder
    public ResponseDto(boolean success, String code ,String message, int status, T response) {
        this.success = success;
        this.status = status;
        this.code = code;
        this.message = message;
        this.response = response;
    }

    /**
     * 성공 응답
     */
    public static <T> ResponseDto<T> success(HttpStatus status, T data) {
        return ResponseDto.<T>builder()
                .success(true)
                .status(status.value())
                .code(status.name())
                .message("성공적으로 처리되었습니다.")
                .response(data)
                .build();
    }
}

응답 데이터를 ResponseDto로 추가적으로 감싸서 전달하는데 사용됩니다.



⚙️ Repository

@Repository
public interface ChattingRepository extends MongoRepository<ChattingEntity, Long> {
    ChattingResDto findByName(String name);
}

MongoRepository를 extends하며 위에 정의한 ChattingDto로 반환 받습니다.


⚙️ Service

@Service
@RequiredArgsConstructor
public class ChattingService {

    private final ChattingRepository chattingRepository;

    /**
     * Read Test
     */
    public ChattingResDto read(String name) {
        return chattingRepository.findByName(name);
    }
}

Service는 Repository에 데이터를 전달해주는 역할만 수행하도록 간단하게 구성했습니다.


⚙️ Controller

ChattingController {

    private final ChattingService chattingService;

    /**
     * READ Test 입니다.
     */
    @GetMapping("/test")
    public ResponseEntity<?> test(String name) {
        return ResponseEntity.status(HttpStatus.OK).body(ResponseDto.success(HttpStatus.OK,chattingService.read(name)));
    }

최종으로 service 클래스에서 반환 받은 데이터를 ResponseDto로 감싼 뒤 return 합니다.



☘️ PostMan 테스트

초반에 넣었던 mongoDB의 데이터 조회에 성공했습니다.

profile
도전해 보는 것이 성장의 첫걸음입니다 :)

0개의 댓글