전주호
WebSurf
전주호
전체 방문자
오늘
어제
  • 분류 전체보기 (63)
    • CS (1)
    • 프로그래밍 언어 (3)
      • JAVA (1)
      • Python (2)
    • WEB (35)
      • Spring (21)
      • FastAPI (1)
      • React (4)
    • Git (1)
    • Database (2)
    • Cloud (4)
    • Docker (0)
    • Linux (0)
    • AI (8)
      • ComputerVision (3)
      • CUDA (1)
      • Anaconda (1)
      • NLP (1)
    • ETC (9)
    • Project (0)
      • GolaBlur (0)
    • 알고리즘 문제 풀이 (0)
      • 프로그래머스 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • oauth2
  • 클라우드
  • db
  • http
  • cloud
  • jwt
  • jpa
  • API
  • 문제해결
  • PYTHON
  • EC2
  • springboot
  • websocket
  • react
  • 단위테스트
  • 백엔드
  • junit
  • 백엔드로드맵
  • Internet
  • spring
  • AWS
  • 스프링
  • AI
  • 트러블슈팅
  • 테스트
  • Spring Security
  • S3
  • MobileFaceSwap
  • web
  • conda

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
전주호

WebSurf

[SpringBoot] SpringBoot에 MongoDB 연결
WEB/Spring

[SpringBoot] SpringBoot에 MongoDB 연결

2023. 9. 12. 17:52
반응형

 

만들어둔 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
    'WEB/Spring' 카테고리의 다른 글
    • [Spring JPA] IncorrectResultSizeDataAccessException
    • [Spring Boot] API Docs를 자동으로 만들어보자!
    • [Spring Boot] JPA - MySQL
    • [Spring Boot] TDD - JUnit?
    전주호
    전주호

    티스토리툴바