レガシー API からの移行
Overview
このページでは、レガシー API から現在の API に移行するために行う必要がある変更を識別できます。 また、現在の Java ドライバーに固有の機能と新しい API に移行することのメリットについても学べます。
mongodb-driver-legacy
JAR としてパッケージ化されているレガシー API には、レガシー同期 Java ドライバーが含まれており、ドライバーの以前のバージョンで使用されていた命名規則を使用します。
mongodb-driver-sync
JAR としてパッケージ化された現在の API には、現在の同期 Java ドライバーが含まれています。 CRUD 操作へのエントリ ポイントとしてMongoCollection
インターフェースを備えています。 レガシー API は含まれていません。
レガシー API から現在の API への移行を実行するには、必要に応じてコードを更新して、コードがレガシー API を参照しなくなっていることを確認してください。 次に、アプリケーションの依存関係内のレガシー API と、それを含むすべての uber JAR を、現在の API JAR に置き換えます。
必要な変更を処理するようにアプリケーションを更新するだけでなく、本番環境に移行する前に常にオプションと 値に関するその他の違いを確認してください。
現在の API メリット
新しい MongoDB Server のリリースごとに、レガシー API を引き続き使用できます。 ただし、レガシー API は MongoDB Server 3.0 以降で導入されたアップデートをサポートしていません。 さらに、レガシー API では現在の Java ドライバーの一部の機能のサポートが不足しています。 非レガシー API でのみ使用可能な機能には、次のようなものがあります。
変更ストリームは、単一のコレクション、データベース、または配置に対するリアルタイムの変更を監視するように設計された MongoDB Server の機能です。
マルチドキュメント ACID トランザクション。複数のドキュメントへの読み取りと書込みのアトミック性を確保し、複数の操作、コレクション、データベース、ドキュメント、シャードにわたるトランザクションを可能にします
時系列コレクション: 一定期間にわたる測定値のシーケンスを保存し、時系列データのクエリ効率を向上させます
Queryable Encryption : 機密ワークロードを暗号化し、暗号化されたデータを照会できます
Java レコード、またはビジネス ロジックをデータ表現から分離し、クエリを削減する 簡潔な Java クラス
ネイティブ POJO サポート。MongoDB ドキュメントと Java オブジェクト間の自動またはカスタム マッピングを提供します
現在の API の詳細な機能については、「 の新機能 」を参照してください。
API の変更
次の表は、レガシー API と現在の API におけるクラス名とメソッド名の変更の大半を示しています。
Legacy | Current |
---|---|
次のいずれかの方法を使用します。 | |
次のいずれかの方法を使用します。 | |
前述の項目に加えて、次の変更についても考慮してください。
現在の API は、オーバーロードされたメソッドではなく、
Options
クラスとメソッド連鎖を使用します。現在の API は、ドライバー バージョン 4.0 以降ではデフォルトで緩和型 JSON 形式を使用します。 アプリケーションが厳密な JSON 形式に依存している場合は、データの読み取りまたは書き込みで厳密モードを使用します。 現在の API で JSON 形式を指定する方法については、ドキュメント データ形式: 拡張 JSONガイドを参照してください。
MongoCollection
現在の API における のデフォルトのジェネリック型は org.bson.Document です。 。基本DBObject を指定できます 移行が容易になる場合は、 型パラメーターとして を使用してください。現在の API では、
aggregate()
メソッドに渡す集計パイプラインは、Bson
インターフェースを拡張するオブジェクトのリストを受け入れます。 レガシー API では、DBObject
インターフェースを拡張するオブジェクトのリストが受け入れられます。メソッド署名も API 間で異なります。 詳しくは、次の API ドキュメントを参照してください。
aggregate() 現在の API のメソッド
aggregate() レガシー API のメソッド
BSONインターフェース
DBObject インターフェース