Docs Menu
Docs Home
/ / /
Java 同期

ドライバーのバージョンをアップグレードする

項目一覧

  • Overview
  • 重大な変更
  • サーバー リリースの互換性の変更

このセクションでは、ドライバーを新しいバージョンにアップグレードするためにアプリケーションに加える必要がある変更を識別できます。

アップグレードする前に、次のアクションを実行してください。

  • 新しいバージョンが、アプリケーションが接続する MongoDB Server のバージョン および アプリケーションを実行する Java ランタイム環境(JRE)と互換性があることを確認します。 この情報については、 Java 互換性ページを参照してください。

  • アプリケーションが使用しているドライバーの現在のバージョンとアップグレード予定のバージョンとの間の重大な変更について、 重大な変更セクションで対処します。 MongoDB Server リリースの互換性の変更の詳細については、「サーバー リリースの互換性の変更 」セクションを参照してください。

Tip

将来ドライバー バージョンをアップグレードする際にアプリケーションで必要になる可能性のある変更量を最小限に抑えるには、 Stable API を使用します。

重大な変更とは、特定のバージョンのドライバーにおける規則または動作の変更であり、アップグレードする前に対処しないと、アプリケーションが正常に動作しなくなる可能性があります。

このセクションの重大な変更は、それを導入したドライバーのバージョンによって分類されます。 ドライバーのバージョンをアップグレードするときは、現在のバージョンとアップグレードのバージョン間のすべての重大な変更に対処してください。 例えば、ドライバーを v4.0 から v4.5 にアップグレードする場合は、v4.5 にリストされている重大な変更を含む、v4.0 以降のバージョンからのすべての重大な変更に対処します。

  • ドライバーは MongoDB Server バージョン v 3.4以前への接続のサポートを終了します。 この変更の詳細については、「バージョン4.8 Server リリースのサポート変更 」セクションを参照してください。

  • アプリケーションで OSG コンテナにドライバーを配置し、Java レコードのエンコードとデコードでドライバーに依存する場合は、 org.bson.codecs.recordモジュールに明示的な依存関係を追加する必要があります。

  • v4.6 に実装された は、レコードのRecordCodec フィールドまたは フィールドの型パラメータとして指定されている POJO とレコード クラスを、それぞれのクラスではなくList MapDocument値として逆シリアル化しました。このバージョンでは、それらを適切なレコードと POJO タイプに逆シリアル化するようになりました。

    たとえば、次のレコード クラス定義は、 Chapter型パラメータを受け取るListを含むBookレコードを示しています。

    public record Book(String title, List<Chapter> chapters) {}
    public record Chapter(Integer number, String text) {}

    このバージョンから、コーデックはListのデータをDocument値ではなくChapterレコード クラスに逆シリアル化します。

  • setWindowFields ビルダAPIはbetaではなくなりました。 新しいビルダはバイナリとソースの互換性を破棄します。 集計 API ドキュメント setWindowFields()を参照してください 新しい メソッド署名の情報については、 を参照してください。

    アプリケーションが v4.7 より前のバージョンでこのビルダを使用している場合は、ソースコードを更新して新しいメソッド署名を使用し、バイナリを再構築します。

  • ObjectIdクラスとそのserialVersionUIDフィールドが更新され、ドライバーのさまざまなバージョン間での直列化の互換性の問題を最小限に抑える新しい形式を使用するようになりました。

    このバージョン以降のドライバーを使用するアプリケーションが、 ObjectIdを含み、かつ以前のバージョンのドライバーによってシリアル化されたオブジェクトに対して Java オブジェクト直列化を実行しようとすると、Java はInvalidClassExceptionをスローします。

    Java オブジェクト直列化の詳細については、 直列化可能なオブジェクトに関する Java ドキュメントを参照してください。

  • 3.12 リリースで非推奨としてマークされているクラスとメソッドの一部は、このバージョンで削除されました。

  • 挿入ヘルパー メソッドは、 voidではなく挿入結果オブジェクトを返します。

  • BsonDocumentDocument 、 relaxed DbObjecttoJson()メソッドは、厳密な JSON 形式ではなく JSON 形式で返します。 This makes the JSON documents more readable, but can make it more difficult to identify the BSON type information, such as the difference between a 32-bit and 64-bit integer. アプリケーションが厳密な JSON 形式に依存している場合は、データの読み取りまたは書き込みで厳密モードを使用します。 現在の API で JSON 形式を指定する方法については、ドキュメント データ形式: 拡張 JSONガイドを参照してください。

  • java.util.UUID値のデフォルトの BSON 表現がJAVA_LEGACYからUNSPECIFIEDに変更されました。 UUID 値を保存または検索するアプリケーションでは、使用する表現を明示的に指定する必要があります。 MongoClientSettingsuuidRepresentationプロパティで表現を指定できます。

    指定する UUID 表現は、ドライバーが UUID をデコードする方法を厳密に制御します。 ドライバーの以前のバージョンでは、 JAVA_LEGACY表現を指定すると、ドライバーはサブタイプ 3 と 4 のバイナリ オブジェクトを UUID としてデコードしていました。 バージョン 4.0 では、 JAVA_LEGACY表現はサブタイプ 3 でのみ機能します。

    列挙型のメンバーのリストについては、UuidRepresentation 4.0v API ドキュメントを参照してください。

  • 接続プールは、MongoDB への接続を必要とする待機キュー スレッドや非同期タスクの数を制限しなくなりました。 アプリケーションは、 MongoWaitQueueFullExceptionをスローするようにドライバーに依存するのではなく、必要に応じてリクエストを調整する必要があります。

  • ドライバーはjava.util.logging (JUL)パッケージを使用したログ記録はなくなり、SLF4J のログ記録フレームワークのみをサポートします。

  • 埋め込みドライバーと Android ドライバーが削除されました。 アプリケーションがこれらのドライバーに依存する場合は、3.x Java ドライバー バージョン を引き続き使用する必要があります。

  • uber JAR のmongo-java-drivermongodb-driverは公開されなくなりました。 アプリケーションがこれらのいずれかに依存している場合は、アプリケーションが使用する API に応じてmongodb-driver-syncまたはmongodb-driver-legacyのいずれかに切り替える必要があります。 依存関係から uber JAR を削除していることを確認してください。

  • 挿入ヘルパー メソッドへのメソッド署名の変更など、バイナリ互換性の中断が導入された複数のクラスに対するアップデート。 ドライバーにリンクするすべてのクラスをこのバージョン以降に対して再コンパイルして、クラスが引き続き機能することを確認します。

サーバー リリースの互換性の変更とは、MongoDB Java ドライバーに対する変更で、MongoDB Server の一連のバージョンのサポートを廃止します。

ドライバーは、サポート終了(EOL)に達すると、MongoDB Server バージョンのサポートを終了します。

EOL 製品の MongoDB サポートの詳細については、レガシー サポート ポリシー を参照してください。

  • v 4.8ドライバーは MongoDB Server v 3.4以前のサポートを削除します。 v 4.8を使用するには ドライバーに設定されている場合、MongoDB Server は v 3.6である必要があります。 以降に更新します。 MongoDB Server 配置をアップグレードする方法については、MongoDB Server マニュアルのリリースノートを参照してください。

戻る

互換性