728x90
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 를 참고해 주세요. 감사합니다.
728x90
'프레임워크 > SpringBoot' 카테고리의 다른 글
[SpringBoot] 캐릭터 맞히기 게임 사이트 구현하기 (1) | 2024.10.10 |
---|---|
[SpringBoot] AOP로 메서드 호출 로그 남기기 (1) | 2024.09.25 |
[SpringBoot] JPA 쿼리 메서드 키워드 정리 및 예제 (2) | 2024.09.24 |
[SpringBoot] JPA + Criteria를 이용한 Join 예제 (2) | 2024.09.23 |
[SpringBoot] Apache Kafka 간단한 예제만들기 (0) | 2024.09.19 |