Atualizar versões do driver
Visão geral
Nesta seção, você pode identificar as alterações que precisa fazer no seu aplicativo para atualizar seu driver para uma nova versão.
Antes de atualizar, execute as seguintes ações:
Certifique-se de que a nova versão seja compatível com as versões do MongoDB Server às quais seu aplicação se conecta e com o Java Runtime Environment (JRE) em que seu aplicação é executado. Consulte a página Compatibilidade Java para obter essas informações.
Resolva quaisquer alterações interruptivas entre a versão atual do driver que seu aplicativo está usando e a versão de atualização planejada na seção alterações interruptivas. Para saber mais sobre as alterações de compatibilidade da versão do Servidor MongoDB, consulte a seção Alterações de compatibilidade da versão do servidor.
Dica
Para minimizar a quantidade de alterações que seu aplicativo pode exigir ao atualizar as versões do driver no futuro, use a API estável.
Mudanças de última hora
Uma alteração significativa é uma modificação em uma convenção ou comportamento em uma versão específica do driver que pode impedir que seu aplicativo funcione corretamente se não for resolvida antes da atualização.
As mudanças significativas nesta seção são categorizadas pela versão do driver que as introduziram. Ao atualizar as versões do driver, resolva todas as alterações significativas entre a versão atual e a atualizada. Por exemplo, se você estiver atualizando o driver de v4.0 para v4.5, resolva todas as alterações significativas da versão posterior à v4.0, incluindo as listadas na v4.5.
Alterações significativas na versão 4.8
O driver encerra o suporte para conexão com versões do MongoDB Server v3.4 e anteriores. Para saber mais sobre essa alteração, consulte a seção Alterações do suporte da versão do servidor versão 4.8.
Você deve adicionar uma dependência explícita no módulo
org.bson.codecs.record
se seu aplicativo distribuir o driver em um container OSGi e depender do driver para codificar e decodificar registros Java.O
RecordCodec
, implementado na versão 4.6, POJOs desserializados e classes de registro que são especificados como parâmetros de tipo dos camposList
ouMap
de um registro como valoresDocument
em vez das suas respectivas classes. Essa versão agora os desserializa para os tipos de registro e POJO adequados.Por exemplo, as seguintes definições da classe de registro mostram um registro
Book
que contém umaList
que recebe um parâmetro do tipoChapter
:public record Book(String title, List<Chapter> chapters) {} public record Chapter(Integer number, String text) {} A partir desta versão, o codec desserializa dados no
List
em classes de registro doChapter
em vez de valores deDocument
.
Versão 4.7: mudanças importantes
A API do construtor
setWindowFields
não é mais beta. O novo construtor quebra a compatibilidade binária e de origem. Consulte a documentação da API Aggregates para obter informações sobre as novas assinaturas do métodosetWindowFields()
.Se seu aplicativo usa esse construtor em uma versão anterior à v4.7, atualize seu código-fonte para usar a nova assinatura do método e reconstrua seu binário.
Alterações significativas na versão 4.2
A classe
ObjectId
e seu camposerialVersionUID
foram atualizados para usar um novo formato que reduz problemas de compatibilidade de serialização em diferentes versões do driver.Se um aplicativo utilizando esta versão ou posterior do driver tenta executar a serialização de objetos Java em quaisquer objetos que contenham um
ObjectId
e foram serializados por uma versão anterior do driver, Java lança umInvalidClassException
.Para saber mais sobre a serialização de objetos Java, veja a documentação Java em Objetos serializáveis.
Alterações significativas na versão 4.0
Diversas classes e métodos marcados como obsoletos na versão 3.12 foram removidos nesta versão.
Os métodos auxiliares de inserção geram um objeto de resultado de inserção em vez de
void
.Os métodos
toJson()
noBsonDocument
,Document
eDbObject
retornam um formato de JSON relaxado em vez de um formato de JSON rigoroso. Isso torna os documentos JSON mais legíveis, mas pode dificultar a identificação das informações do tipo de BSON, como a diferença entre um número inteiro de 32-bit e 64-bit. Se seu aplicativo depender do formato JSON rigoroso, utilize o modo rigoroso ao ler ou gravar dados. Saiba como especificar o formato JSON na API atual no guia Formato de dados do documento: JSON estendido.A representação-padrão BSON do valor
java.util.UUID
foi alterada deJAVA_LEGACY
paraUNSPECIFIED
. Os aplicativos que armazenam ou recuperam valores UUID devem especificar explicitamente qual representação usar. Você pode especificar a representação na propriedadeuuidRepresentation
deMongoClientSettings
.A representação do UUID que você especifica controla estritamente como o driver decodifica os UUIDs. Nas versões anteriores do driver, se você especificasse a representação
JAVA_LEGACY
, o driver decodificaria objetos binários dos subtipos 3 e 4 como UUIDs. Na versão 4.0, a representaçãoJAVA_LEGACY
funciona somente com subtipo 3.Para obter uma lista de nós na enumeração
UuidRepresentation
, consulte a documentação da API v4.0O pool de conexões não restringe mais o número de threads de fila de espera ou tarefas assíncronas que exigem uma conexão com o MongoDB. O aplicativo deve limitar as solicitações conforme necessário, em vez de depender do driver para lançar um
MongoWaitQueueFullException
.O driver deixa de registrar utilizando o pacote
java.util.logging
(JUL) e somente apoia o framework de registro SLF4J.Os drivers incorporados e de Android foram removidos. Se o seu aplicativo depender desses drivers, você deverá continuar usando uma versão 3.x do driver Java.
Os uber JARs,
mongo-java-driver
emongodb-driver
não são mais publicados. Se seu aplicativo depender de um deles, você deverá alternar paramongodb-driver-sync
oumongodb-driver-legacy
dependendo de qual API o aplicativo usa. Certifique-se de remover os uber JARs das suas dependências.As atualizações de várias classes introduziram quebras de compatibilidade binária, como a alteração da assinatura do método para os métodos auxiliares de inserção. Recompile todas as classes vinculadas ao driver nessa versão ou posterior para garantir que elas continuem funcionando.
Alterações na compatibilidade da versão do servidor
Uma alteração de compatibilidade de versão do servidor é uma modificação no driver Java do MongoDB que descontinua o suporte para um conjunto de versões do Servidor MongoDB.
O driver interrompe o suporte para uma versão do Servidor MongoDB após atingir o fim da vida útil (EOL).
Para saber mais sobre o suporte MongoDB para produtos EOL, consulte a Política de Suporte Legado.
Alterações no suporte à versão do servidor versão 4.8
O driver v4.8 remove a compatibilidade com o MongoDB Server v3.4 e anterior. Para usar o driver v4.8, seu MongoDB Server deve ser v3.6 ou posterior. Para saber como atualizar seu MongoDB Server, consulte Notas da versão no manual do MongoDB Server.