Skip to main content

MongoDB 연동을 위한 튜토리얼

· 2 min read
//Config

@Configuration
@EnableMongoAuditing
class MongoConfig {
}
//Repository

interface MailContentsRepository : MongoRepository<MailContents, String> {
}
//Entity(Document)
@Document(collection = "mail_contents")
class MailContents(

@Id
val id : String? = null,

var name : String,

var content : String,

var category: MailCategory = MailCategory.NONE,

var siteLink: String,

@CreatedDate
val createdAt: Instant? = null,

@LastModifiedDate
val updatedAt: Instant? = null,
)

yaml 에서 설정을 할때 2가지 방식으로 가능하다. 나는 첫번째 방식인 URI를 통해서 연동을 진행했다.

spring:  
data:
mongodb:
uri: mongodb+srv://{id}:{password}@{uri}/{dbName}?retryWrites=true&w=majority
spring:
data:
mongdb:
host:
port:
user:
password:

TestCode를 통해 DB에 insert를 진행하니 정상적으로 데이터가 저장된다.

@Test  
@DisplayName("Insert 테스트")
fun insert() {
val mailContents =
MailContents(null, "name", "contents", MailCategory.NONE, "test.com", Instant.now(), Instant.now())
mailContentsRepository.save(mailContents)
}

작업결과

작업결과

확인

확인

이때 RDB는 서버 기동과 동시에 DDL을 통해 테이블과 스키마를 만들지만, MongoDB에서는 컬렉션을 미리 만들지 않고, 첫 insert가 진행되는 시점에서 자동 생성된다. 간단하게 정리해보자.

RDB

  • 테이블 먼저 생성
  • 그 다음에 INSERT 가능

MongoDB

  • 컬렉션을 미리 안 만들어도 됨
  • 첫 insert 시점에 자동 생성