Post

MongoDB - SpringBoot / "_class" 필드 제거

MongoDB - SpringBoot / "_class" 필드 제거

Spring Data MongoDB - Type Mapping

_class 필드

  • Spring Data MongoD를 별다른 설정없이 사용하면 컬렉션에 객체를 저장할 때, 자동으로 객체의 Java 클래스 이름을 포함하고 있는 _class 라는 필드가 추가되어 저장됨
  • 역직렬화 정확성 확보 : 데이터를 조회할 때 다시 해당 클래스의 인스턴스로 역직렬화(deserialization) 하는데 사용됨
  • 다형성 지원
{
  "_id": ObjectId("..."),
  "name": "Alice",
  "_class": "com.example.User"
}

_class 필드 제외하고 저장하는 방법

1
2
3
4
5
6
7
8
9
10
@Bean
public MappingMongoConverter mappingMongoConverter(
    MongoDatabaseFactory mongoDatabaseFactory,
    MongoMappingContext mongoMappingContext
) {
  DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDatabaseFactory);
  MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
  converter.setTypeMapper(new DefaultMongoTypeMapper(null));
  return converter;
}
This post is licensed under CC BY 4.0 by the author.