Asignación eficiente de POJO a / desde Java Mongo DBObject usando Jackson
Aunque similar aConvierta DBObject a un POJO usando el controlador Java MongoDB mi pregunta es diferente en que soyespecíficamente Interesado en usar Jackson para mapear.
Tengo un objeto que quiero convertir en una instancia de Mongo DBObject. Quiero usar el marco de Jackson JSON para hacer el trabajo.
Una forma de hacerlo es:
DBObject dbo = (DBObject)JSON.parse(m_objectMapper.writeValueAsString(entity));
Sin embargo, de acuerdo conhttps://github.com/FasterXML/jackson-docs/wiki/Presentation:-Jackson-Performance esta es la peor manera de ir Por lo tanto, estoy buscando una alternativa. Idealmente, me gustaría poder conectar con el canal de generación JSON y rellenar unDBObject
instancia sobre la marcha. Esto es posible, porque el objetivo en mi caso es unBasicDBObject
instancia, que implementa la interfaz del mapa. Por lo tanto, debe encajar en la tubería fácilmente.
Ahora, sé que puedo convertir un objeto a Map usando elObjectMapper.convertValue
función y luego convertir recursivamente el mapa a unaBasicDBObject
instancia utilizando el constructor de mapas de laBasicDBObject
tipo. Pero, quiero saber si puedo eliminar el mapa intermedio y crear elBasicDBObject
directamente.
Tenga en cuenta, que debido a unBasicDBObject
es esencialmente un mapa, la conversión opuesta, es decir, de un escalarDBObject
Para un POJO es trivial y debe ser bastante eficiente:
DBObject dbo = getDBO();
Class clazz = getObjectClass();
Object pojo = m_objectMapper.convertValue(dbo, clazz);
Por último, mi POJO no tiene ninguna anotación JSON y me gustaría que siga siendo así.