Skip to content

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

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()
          )
      )
  }
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions