[LG U+ 유레카 3기] MongoDB 기본 CRUD 실습

2025. 10. 21. 15:06DB/NoSQL

[LG U+ 유레카 3기] MongoDB 기본 CRUD 실습

이번 실습에서는 MongoDB 자바 드라이버를 사용하여 CRUD(Create, Read, Update, Delete) 기능을 직접 구현해보았다.
MongoDB는 NoSQL 기반의 문서형 데이터베이스로, 테이블 대신 CollectionDocument 구조를 사용한다.


❶ 실습 환경 설정

MongoDB가 로컬 환경에 설치되어 있어야 하며, 자바 프로젝트에서는 Maven으로 의존성을 추가했다.


<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.5.0</version>
</dependency>

자바 버전은 17로 설정했고, 기본 연결 문자열은 mongodb://localhost:27017을 사용했다.


❷ 데이터베이스 연결 및 컬렉션 접근

MongoDB 클라이언트를 생성하고, 데이터베이스(madang)와 컬렉션(book)을 가져온다.


MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("madang");
MongoCollection<Document> collection = database.getCollection("book");

이 과정을 통해 MongoDB 서버에 연결하고, 해당 데이터베이스 내부의 book 컬렉션에 접근할 수 있다.


❸ CRUD 실습 코드


import org.bson.Document;
import org.bson.conversions.Bson;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Updates.set;
import static com.mongodb.client.model.Updates.combine;

import com.mongodb.client.*;

public class Test {
	
	private static final String CONNECTION_STRING= "mongodb://localhost:27017";
	private static final String DATABASE_NAME ="madang";
	private static final String CONNECTION_NAME = "book";
	
	public static void main(String[] args) {
		MongoClient mongoClient = MongoClients.create(CONNECTION_STRING);
		MongoDatabase database = mongoClient.getDatabase(DATABASE_NAME);
		MongoCollection<Document> collection = database.getCollection(CONNECTION_NAME);
		
		// 수정
		Bson filter = eq("bookid", 11);
		Bson update = combine(
				set("bookname","uplus도서2"),
				set("publisher","멀캠2"),
				set("price",10000)
		);
		collection.updateOne(filter, update);
		
		mongoClient.close();
	}
}

이 코드는 MongoDB의 updateOne() 메서드를 사용하여 특정 도서 정보를 수정하는 예시이다.
만약 해당 bookid가 존재하지 않으면 아무 문서도 변경되지 않는다.


❹ BookDto 클래스


package dto;

public class BookDto {
	private int bookId;
	private String bookName;
	private String publisher;
	private int price;

	public BookDto() {}

	public BookDto(int bookId, String bookName, String publisher, int price) {
		this.bookId = bookId;
		this.bookName = bookName;
		this.publisher = publisher;
		this.price = price;
	}

	@Override
	public String toString() {
		return "BookDto [bookId=" + bookId + ", bookName=" + bookName +
			", publisher=" + publisher + ", price=" + price + "]";
	}
}

MongoDB의 Document 데이터를 자바 객체로 변환하기 위한 DTO 클래스이다.
RDB의 행(row)에 해당하는 Document를 Java 객체로 매핑할 때 유용하다.


❺ CRUD 동작 예시

기능 메서드 예시
등록 (Create) insertOne() collection.insertOne(document)
조회 (Read) find() collection.find(eq("bookid",1))
수정 (Update) updateOne() collection.updateOne(filter, update)
삭제 (Delete) deleteOne() collection.deleteOne(eq("bookid",11))

MongoDB는 스키마가 고정되지 않아, 새로운 필드를 자유롭게 추가하거나 제거할 수 있는 유연성을 가진다.


❻ 개념 정리

  • Document : MongoDB에서의 단일 데이터 단위 (JSON 형태).
  • Collection : Document들의 집합, RDB의 Table과 유사.
  • Database : 여러 Collection의 집합.
  • BSON : MongoDB 내부에서 데이터를 저장하는 이진 형태의 JSON.
  • Bson Filter : MongoDB의 쿼리 조건 객체 (예: eq(), gt() 등).

❼ 실습 요약

이번 실습을 통해 Java에서 MongoDB를 직접 제어하는 방법을 익혔다.
SQL이 아닌 명령형 코드로 데이터를 조작하며, NoSQL의 유연한 구조와 문서지향적 설계를 이해할 수 있었다.

'DB > NoSQL' 카테고리의 다른 글

[LG U+ 유레카 3기]MongoDB Compass CRUD 실습 정리  (0) 2025.10.21
NoSQL과 MongoDB 이해  (0) 2025.10.21