Skip to content

[MongoDB+Spring] 객체/컬렉션 필드 타입 분리시키기 #6

@dkdud9261

Description

@dkdud9261

MongoDB에 컬렉션을 저장하기 위한 객체 클래스를 아래와 같이 정의하면 클래스 내에 정의한 타입과 동일하게 필드가 만들어진다.

data class MyCollection(
  @Id
  val id: String? = null,
  val myField: String
)

만약, 객체의 필드 타입과 디비의 필드 타입을 다르게 관리하고 싶다면 아래와 같은 방법을 사용할 수 있다.

예제) 객체에는 MyString Object 타입, 디비에는 String 타입으로 저장하기

  1. 객체 필드로 저장하고자 하는 타입 클래스와 같은 패키지 내에 Converter 정의하기
class MyString {
  val value: String

  @WritingConverter
  class MyStringToStringConverter: Converter<MyString, String> {
	override fun convert(source: MyString): String {}
  }
  
  @ReadingConverter
  class StringToMyStringConverter: Converter<String, MyString> {
	override fun convert(source: String): MyString {}
  }
}
  1. MongoCustomConversions 빈 등록하기
@Configuration
class MongoConfig {

  @Bean
  fun customConversions(): MongoCustomConversions {
      return MongoCustomConversions(
          listOf(
              MyStringToStringConverter(),
              StringToMyStringConverter()
          )
      )
  }
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions