본문 바로가기

Backend-Programming/Spring Boot

SpringBoot - data - mongodb(MongoRepository)를 사용한 몽고디비 CRUD

1. build.gradle에 라이브러리 추가하기 

...
dependencies {
   ...
   // mongo
   implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
}

2. application.properties에 MongoDB 정보 추가하기 

...
spring.data.mongodb.host=몽고디비 설치 ip
spring.data.mongodb.port=몽고디비 port
spring.data.mongodb.database=db명
spring.data.mongodb.username=계정
spring.data.mongodb.password=비밀번호
...

3. entity, repository 추가하기

JPA를 사용해 보신 분이라면 따로 공부하실 필요가 없을 정도로 비슷합니다. 

.> src > main > java > packagename > test > entity > TestDataEntity.java

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

import lombok.Data;
import lombok.ToString;

@Data
@Document("test_data")
@ToString
public class TestDataEntity {
	
	@Id
	private String _id;
	
	private String name;
	private int age;
	private int score=100;
	
}

score=100과 같이 기본값을 설정할 수 있습니다. 

 

.> src > main > java > packagename > test > repository > TestDataRepository.java

package board2.test.repository;

import org.springframework.data.mongodb.repository.MongoRepository;

import board2.test.entity.TestDataEntity;

public interface TestDataRepository extends MongoRepository<TestDataEntity, String>{

}

spring data jpa처럼 findby... 모양으로 정의하여 메서드를 사용할 수도 있습니다. 

4. service

insert

@Override
public void insertData() throws Exception {
	TestDataEntity entity = new TestDataEntity();
	entity.setName("chul");
	entity.setAge(20);
	entity.setScore(80);
	testDataRepository.save(entity);
}

실행 결과

find

@Override
public List<TestDataEntity> findData() throws Exception {
	return testDataRepository.findAll(); 
}

실행 결과

update

jpa와 마찬가지로 repository.save 메서드를 사용하여 update를 합니다. _id가 같은 것이 있다면 update, 없다면 save를 한다고 생각하면 됩니다. 

@Override
public void updateData() throws Exception {
	TestDataEntity entity = new TestDataEntity();
	entity.set_id("623f05026eafcd1a8ccb4678");
	entity.setName("updatedName");
	testDataRepository.save(entity);
}

실행 결과

Delete

@Override
public void deleteData() throws Exception {
	testDataRepository.deleteById("623f05026eafcd1a8ccb4678");
}

실행 결과

추가했던 데이터가 성공적으로 삭제되었습니다.