Backend-Programming/Spring Boot
SpringBoot - data - mongodb(MongoRepository)를 사용한 몽고디비 CRUD
super728
2022. 3. 26. 21:30
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");
}
실행 결과
추가했던 데이터가 성공적으로 삭제되었습니다.