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 la mongodb-driver-legacy JAR, contiene el controlador Java síncrono heredado y utiliza convenciones de nomenclatura empleadas 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 gestionar todos los cambios necesarios, asegúrese siempre de comprobar cualquier otra diferencia en las opciones y en los valores devueltos antes de pasarla 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 ninguna actualización introducida en MongoDB Server 3.0 o posterior. Además, la API heredada carece de soporte para ciertas funcionalidades del driver Java actualizado. Algunas funcionalidades 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
Queryable Encryption, que permite cifrar cargas de trabajo sensibles y query los datos cifrados
Java registros, o clases de Java concisas que separan la lógica del negocio de la representación de datos y reducen la codificación redundante
Soporte nativo de POJO, que proporciona una asignación automática o personalizada entre documentos de MongoDB y objetos Java
Para obtener más información sobre las funcionalidades actuales de la API, consulta Notas de la versión.
Cambios en la API
La siguiente tabla muestra la mayoría de los cambios en los nombres de las clases y métodos entre la API heredada y la actual.
Legacy | Actual |
|---|---|
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 elementos anteriores, considera los siguientes cambios:
La API actual utiliza clases
Optionsy encadenamiento de métodos en vez 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 por defecto para
MongoCollectionen la API actual es org.bson.Document. Puedes especificar BasicDBObject como parámetro de tipo si facilita tu 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 APIs. Consulta la siguiente documentación de 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 legacy?
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 código snippet anterior se parece a lo siguiente:
{"_id": 1, "val": 1}
Para obtener más información sobre las clases y métodos heredados utilizados en el ejemplo anterior, consulta las siguientes páginas de la 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.
¿Cómo uso las clases MongoClientOptions y MongoClientURI heredadas?
El siguiente ejemplo muestra cómo usar las clases heredadas MongoClientOptions y MongoClientURI para configurar tu nivel de confirmación de escritura (write concern):
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.