SpringBoot

MongoDB

Jungsoomin :) 2020. 11. 8. 18:33

MongoDB

JSON 기반의 도큐먼트 데이터베이스Schema 가 없다는 것이 특성이다.

 

필요의존

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

 

spring-boot-starter-data-mongo 추가 시 스프링 부트에서 지원해주는 객체들

  1. MongoTemplate
  2. MongoRepository : Jpa 처럼 상속
public interface MongoRepository extends org.springframework.data.mongodb.repository.MongoRepository<Account,String> {

    Optional<Account> findByEmail(String email);
}

스프링부트가 기본적으로 접속하려는 포트는 몽고 db의 27017. 즉, 설정할 필요가 없음


@Document

  1. 해당 클래스로 도큐먼트를 만든다.
  2. 도큐먼트 들은 컬렉션에 들어가며 컬렉션은 테이블과 유사
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "accounts")
public class Account {

    @Id
    private String id;

    private String username;

    private String email;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

테스트를 위한 내장형 몽고DB

  1. 이후 슬라이싱 테스트 가능
  2. @DataMongoTest
<dependency>
            <groupId>de.flapdoodle.embed</groupId>
            <artifactId>de.flapdoodle.embed.mongo</artifactId>
            <scope>test</scope>
</dependency>

@SpringBootApplication
public class MongoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MongoApplication.class, args);
    }

    @Autowired
    private MongoTemplate mongoTemplate;

    @Autowired
    private MongoRepository mongoRepository;

    @Bean
    public ApplicationRunner applicationRunner(){
        return args -> {
            Account accounts = new Account();
            accounts.setEmail("aaa@bbb");
            accounts.setUsername("aaaa");
            mongoRepository.insert(accounts);
//            mongoTemplate.insert(accounts);

            System.out.println("완료");
        };
    }

}