반응형
만들어둔 MongoDB 데이터베이스를 SpringBoot 프로젝트에 연결해보려고 합니다.
목표
데이터베이스에 이름과 나이를 저장하고 확인하는 테스트 코드를 작성해 봅시다.
데이터베이스 이름 : test
컬렉션 이름 : Info
의존성 추가
implementation ("org.springframework.boot:spring-boot-starter-data-mongodb")
연결 설정
저는 MongoDB Altas로 데이터베이스를 생성해서 해당 URI를 가져와 설정해 주었습니다.
Overview에서 본인의 클러스터의 Connect를 클릭합니다.
여기서 Drivers를 선택해 줍니다.
3번에 있는 윗줄을 복사해 주시고 다음과 같이 맞춰줍니다.
spring.data.mongodb.uri=mongodb+srv://<Username>:<Password>@cluster0.lmiucuo.mongodb.net/<DatabaseName>
또한 저는 application.properties에 설정 값을 저장했습니다.
Entity 생성
@Document(collection = "Info")
@Builder
@AllArgsConstructor
@Getter
public class InfoEntity {
@Id
String id;
String name;
Long age;
}
Repository 생성
@Repository
public interface InfoMongoDBRepository extends MongoRepository<InfoEntity, String> {
List<InfoEntity> findByName(String name);
}
MongoRepository를 상속받아 사용합니다.
JPA의 Repositoy처럼 메서드를 만들어 사용할 수 있습니다.
Test 코드
@SpringBootTest
public class MongoDBTest {
@Autowired
InfoMongoDBRepository infoMongoDBRepository;
@BeforeEach
public void cleanup(){
infoMongoDBRepository.deleteAll();
}
@Test
public void saveInfo(){
// Info
String name = "juho";
Long age = 25L;
// save
infoMongoDBRepository.save(InfoEntity.builder()
.name(name)
.age(age)
.build());
// check
List<InfoEntity> checkInfos = infoMongoDBRepository.findByName(name);
InfoEntity checkInfo = checkInfos.get(0);
Assertions.assertEquals(name, checkInfo.getName(), "nope");
Assertions.assertEquals(age, checkInfo.getAge(), "nope");
}
}
결과
테스트를 성공해서 DB를 확인해 보니 잘 저장되었습니다.
반응형
'WEB > Spring' 카테고리의 다른 글
[Spring JPA] IncorrectResultSizeDataAccessException (0) | 2023.12.05 |
---|---|
[Spring Boot] API Docs를 자동으로 만들어보자! (1) | 2023.11.25 |
[Spring Boot] JPA - MySQL (0) | 2023.09.08 |
[Spring Boot] TDD - JUnit? (0) | 2023.06.27 |
[Spring Boot] Spring Boot에서 TDD 방법론 (0) | 2023.06.23 |