티스토리 뷰

MongoDB는 NoSQL 데이터베이스로, 비관계형 데이터베이스 모델을 사용하는 것이 가장 큰 특징입니다. 스키마리스 구조로 고정된 스키마가 없기 때문에 데이터의 구조를 유연하게 관리할 수 있을뿐더러 샤딩을 통해 데이터를 여러 서버에 분산해 저장하고, 이를 통해 대량의 데이터를 처리할 수 있는 수평적 확장을 지원합니다. 윈도우에 MongoDB 를 설치하는 방법과 SpringBoot를 통해 MongoDB를 사용하는 방법에 대해 알아보겠습니다.

 

1. 윈도우 MongoDB 설치

  • 아래 경로로 접속하여 커뮤니티 버전을 다운로드합니다.
https://www.mongodb.com/try/download/community

  • Complete : 기본
  • Custom : 사용자설정

저는 Complete로 진행하였습니다.

  • 원하는 경로로 지정하시고 Next 버튼을 클릭합니다.

  • 편리하게 MongoDB 를 사용하기 위해 Install MongoDB Compass 체크박스를 체크합니다.

  • 설치가 완료되면 서비스에 MongoDB Server 가 실행 중인 것을 확인할 수 있습니다.

  • 기본포트인 27017로 접근하면 정상적으로 실행되었는지 확인가능합니다.

  • 추가로 설치한 MongoDB Compass를 통해 쉽게 데이터를 관리할 수 있습니다.

 

이제 SpringBoot를 이용하여 MongoDB 를 사용하는 방법에 대해 알아보겠습니다.

 

2. SpringBoot 프로젝트 생성

 

2.1. 의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
  • build.gradle 에 의존성을 추가합니다.

 

2.2. MongoDB 설정

spring.data.mongodb.uri=mongodb://localhost:27017/mongoDB
  • application.properties 에 MongoDB URI를 추가합니다.

 

2.3. Product 모델 생성

package com.example.mongodb_example.model;

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "products")
public class Product {
  @Id
  private String id;
  private String name;
  private double price;
}
  • Document 명을 products로 지정합니다.

 

2.4. Repository 생성

package com.example.mongodb_example.repository;

import com.example.mongodb_example.model.Product;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface ProductRepository extends MongoRepository<Product, String> {
}

 

2.5. Controller 생성

package com.example.mongodb_example.controller;

import com.example.mongodb_example.model.Product;
import com.example.mongodb_example.repository.ProductRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/products")
public class ProductController {

  private final ProductRepository productRepository;

  /**
   * 생성
   */
  @PostMapping
  public Product createProduct(@RequestBody Product product) {
    return productRepository.save(product);
  }

  /**
   * 전체조회
   */
  @GetMapping
  public List<Product> getAllProducts() {
    return productRepository.findAll();
  }

  /**
   * 상세조회
   */
  @GetMapping("/{id}")
  public Optional<Product> getProductById(@PathVariable String id) {
    return productRepository.findById(id);
  }

  /**
   * 수정
   */
  @PutMapping("/{id}")
  public Product updateProduct(@PathVariable String id, @RequestBody Product productDetail) {
    Optional<Product> optionalProduct = productRepository.findById(id);
    if (optionalProduct.isPresent()) {
      Product product = optionalProduct.get();
      product.setName(productDetail.getName());
      product.setPrice(productDetail.getPrice());
      return productRepository.save(product);
    } else {
      return null;
    }
  }

  /**
   * 삭제
   */
  @DeleteMapping("/{id}")
  public void deleteProduct(@PathVariable String id) {
    productRepository.deleteById(id);
  }

}

 

2.6. 등록

  • Postman을 통해 API를 호출하고 결과를 받습니다. Compass를 보면 /mongoDB/products 에 데이터가 생긴 걸 확인할 수 있습니다.

 

2.7. 모두조회

  • 등록된 상품 전부 조회합니다.

 

2.8. 개별조회

  • ID를 통해 특정 상품만 조회합니다.

 

2.9. 수정

  • 기존 상품을 수정합니다.

 

2.10. 삭제

  • 특정상품을 삭제합니다.

 

전체소스는 Github 를 참고해 주세요. 감사합니다.

최근에 올라온 글
Total
Today
Yesterday