Overview
En esta página, puedes identificar los cambios que debes realizar para migrar del API heredado al API actual. También puedes aprender sobre las funcionalidades únicas del driver Java actual y los beneficios de migrar al nuevo API.
La API heredada, empaquetada como mongodb-driver-legacy JAR contiene el controlador Java sincrónico heredado y utiliza convenciones de nomenclatura utilizadas en versiones anteriores del controlador.
La API actual, empaquetada como el JAR mongodb-driver-sync, contiene el controlador Java síncrono actual. Incorpora la interfaz MongoCollection como punto de entrada para las operaciones CRUD. No contiene la API heredada.
Para migrar de la API heredada a la API actual, asegúrese de que su código ya no haga referencia a la API heredada y actualícelo cuando sea necesario. Luego, reemplace la API heredada y cualquier archivo JAR de Uber que la contenga con el JAR de la API actual en las dependencias de su aplicación.
Además de actualizar su aplicación para manejar los cambios necesarios, siempre verifique si hay otras diferencias en las opciones y valores de retorno antes de moverla a producción.
Beneficios actuales de la API
Puede seguir usando la API heredada con cada nueva versión de MongoDB Server. Sin embargo, la API heredada no es compatible con las actualizaciones introducidas en MongoDB Server 3.0 o posteriores. Además, la API heredada no es compatible con ciertas funciones del controlador Java actual. Algunas funciones que solo están disponibles en la API no heredada incluyen:
Flujos de cambio, una función de MongoDB Server diseñada para monitorear cambios en tiempo real en una sola colección, base de datos o implementación
Transacciones ACID multidocumento, que garantizan la atomicidad de las lecturas y guardados en varios documentos y permiten transacciones a través de múltiples operaciones, colecciones, bases de datos, documentos y particiones
Colecciones de series de tiempo, que almacenan secuencias de mediciones durante un período de tiempo y mejoran la eficiencia de las consultas para datos de series de tiempo
Cifrado consultable, que le permite cifrar cargas de trabajo confidenciales y consultar los datos cifrados
Registros Java, o clases Java concisas que separan la lógica empresarial de la representación de datos y reducen el código repetitivo
Compatibilidad nativa con POJO, que proporciona un mapeo automático o personalizado entre documentos MongoDB y objetos Java
Para obtener más información sobre las características de la API actual, consulte Notas de la versión.
Cambios en la API
La siguiente tabla muestra la mayoría de los cambios en los nombres de clases y métodos entre la API heredada y la actual.
Legacy | Corriente |
|---|---|
Utilice uno de los siguientes métodos: | |
Utilice uno de los siguientes métodos: | |
Utilice uno de los siguientes métodos: | |
Utilice uno de los siguientes métodos: | |
Utilice uno de los siguientes métodos: | |
Además de los puntos anteriores, considere los siguientes cambios:
La API actual utiliza clases
Optionsy encadenamiento de métodos en lugar de métodos sobrecargados.La API actual utiliza el formato JSON relajado de forma predeterminada en las versiones del driver 4.0 y posteriores. Si tu aplicación depende del formato JSON estricto, usa el modo estricto al leer o escribir datos. Aprende a especificar el formato JSON en la API actual en la guía Formato de datos de documentos: Extended JSON
El tipo genérico predeterminado para
MongoCollectionen la API actual es org.bson.Document. Puede especificar BasicDBObject como parámetro de tipo si esto facilita la migración.En la API actual, la canalización de agregación que se pasa al método
aggregate()acepta una lista de objetos que extienden la interfazBson. En la API heredada, acepta una lista de objetos que extienden la interfazDBObject.Las firmas de los métodos también difieren entre las API. Consulte la siguiente documentación de la API para obtener más información:
métodoadded() en la API actual
InterfazBson
Interfaz DBObject
Preguntas frecuentes
Esta sección responde preguntas que puedan surgir sobre la API heredada.
¿Cómo me conecto a mi instancia de MongoDB utilizando la API heredada?
Imaginemos que nos conectamos a una colección que contiene únicamente el siguiente documento:
{"_id": 1, "val": 1}
El siguiente ejemplo muestra cómo conectarse a esta colección MongoDB utilizando la API heredada y la API actual:
MongoClient client = new MongoClient(URI); DB db = client.getDB(DATABASE); DBCollection col = db.getCollection(COLLECTION); // Retrieves one document in the collection and prints it DBObject doc = col.find().one(); System.out.println(doc.toString());
MongoClient client = MongoClients.create(URI); MongoDatabase db = client.getDatabase(DATABASE); MongoCollection<Document> col = db.getCollection(COLLECTION); // Prints the first document retrieved from the collection as JSON Document doc = col.find().first(); System.out.println(doc.toJson());
La salida del fragmento de código anterior se parece al siguiente:
{"_id": 1, "val": 1}
Para obtener más información sobre las clases y métodos heredados utilizados en el ejemplo anterior, consulte las siguientes páginas de documentación de API:
Consulta la página Migrar desde la API heredada para obtener una lista de las diferencias entre la API heredada y la actual.
¿Cómo uso las MongoClientOptions MongoClientURI clases heredadas y?
El siguiente ejemplo muestra cómo utilizar las clases heredadas MongoClientOptions y MongoClientURI para establecer su preocupación de escritura:
MongoClientURI mongoURI = new MongoClientURI(URI, MongoClientOptions.builder() .writeConcern(WriteConcern.W1)); MongoClient client = new MongoClient(mongoURI);
MongoClientSettings options = MongoClientSettings.builder() .applyConnectionString(new ConnectionString(URI)) .writeConcern(WriteConcern.W1).build(); MongoClient client = MongoClients.create(options);
Para más información sobre las clases y métodos heredados utilizados en el ejemplo anterior, consulta la siguiente documentación de la API:
Consulta la página Migrar desde la API heredada para obtener una lista de las diferencias entre la API heredada y la actual.