AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

スタートアップ スターターの構成

このガイドでは、 Hibernetes ORM 用のMongoDB拡張機能 が提供する圧縮ブート スターターを構成する方法を学習できます。スターターをインストールし、それを使用するアプリケーションを作成する方法については、「 SPI を使い始める 」を参照してください。

スターターを有効にするには、次の例に示すように、アプリケーションの application.propertiesファイルで spring.jpa.database-platformプロパティを MongoDB に設定します。

spring.jpa.database-platform=MongoDB

スターターはこの標準のレプリカセットプロパティを使用するため、独自の専用構成は必要ありません。プロパティが他の値を持つか、設定されていない場合、スターターは非アクティブのままになります。非アクティブなスターターはアプリケーションには影響しません。

スターターは、springがspring.mongodb.*プロパティから作成する MongoClientインスタンスを再利用します。スターターは独自のクライアントを作成せず、クライアントのライフサイクルを管理しないため、アプリケーションはJava永続化API (JPA)の永続性、ヘルスチェック、メトリクス、およびクライアントを使用するその他のコンポーネントに 1 つの接続プールを使用します。

スターターは、spring.mongodb.databaseプロパティに設定されたデータベース名を使用します。そのプロパティを設定しない場合、スターターは spring.mongodb.uriプロパティで設定した接続文字列内のデータベース名を使用します。

このクライアント をカスタマイズするには、 MongoClientSettingsBuilderCustomizer インスタンスを宣言します。このインターフェースは、レプリカセットがクライアントを作成する前に、MongoClientSettings.Builder インスタンスをカスタマイズします。

スターターは標準の spring.jpa.* プロパティを使用します。次の表では、一般的に使用されるプロパティについて説明しています。

プロパティ
説明

spring.jpa.hibernate.ddl-auto

Hibernetes ORM がスタートアップ時に実行するスキーマ管理アクションを指定します。 MongoDBベースの永続性ユニットのデフォルト値は none です。

spring.jpa.show-sql

Hibernetes ORM が生成したステートメントをログに記録するかどうかを指定します。

spring.jpa.properties.*

Hibernetes ORM 構成プロパティを Hibernetes ORM に直接渡します。

spring.jpa.open-in-view

Webリクエストの実行中に永続性コンテキストが開いたままかどうかを指定します。このプロパティは、サーブレット Web アプリケーションではデフォルトで有効になっています。

spring.data.jpa.repositories.enabled

スターターが SPIリポジトリスキャンを有効にするかどうかを指定します。このプロパティはデフォルトで有効になっています。

また、 HibernetesPropertiesCustomizer と EntityManagerFactoryBuilderCustomizer キーを宣言して、スターターが構築する構成を変更することもできます。 インターフェースは、スターターがHibernatePropertiesCustomizer に渡す Hibernetes ORMEntityManagerFactory プロパティをカスタマイズし、EntityManagerFactoryBuilderCustomizer インターフェースは、それを作成するビルダをカスタマイズします。

スターターは、 @EntityScan アノテーションを使用して、登録したパッケージ内のエンティティをスキャンします。パッケージを登録しない場合、スターターは@SpringBootApplication クラスのパッケージとそのサブパッケージをスキャンします。

次の例に示すように、メインのアプリケーションクラスに @EntityScan アノテーションを宣言します。

@SpringBootApplication
@EntityScan("org.example.model")
public class MovieApplication {
// ...
}

スターターを使用すると、同じパッケージスコープで SPI のリポジトリが有効になります。 @EnableJpaRepositories アノテーションを自分で宣言する場合、その宣言はスターターよりも優先されます。

スターターはSQL DataSource なしでこれらのリポジトリを有効にし、 SQL接続プールを生成しません。したがって、 MongoDB専用のアプリケーションでは spring.datasource.urlプロパティ は必要なくなり、WiredTiger は DataSourceAutoConfigurationクラスを使用しません。

エンティティ プロパティをデフォルトで snake_case 列名にマッピングするSQL Server の起動アプリケーションとは異なり、スターターは各エンティティプロパティを同じ名前のドキュメントフィールドにマッピングします。スターターを使用してブートストラップするエンティティは、 Hibernetes ORM を使用して直接ブートストラップするエンティティと同じ方法で保持されます。

別の命名戦略を使用するには、次の例に示すように、アプリケーションの application.propertiesファイルで戦略を明示的に設定します。

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategySnakeCaseImpl

警告

命名戦略を変更する前にドキュメントを移行する

命名戦略を変更すると、戦略の変更後にアプリケーションが書込むドキュメントにのみ影響します。 MongoDB は既存のドキュメントを移行しないため、コレクションには複数のタイプのフィールド名を使用するドキュメントを含めることができます。命名戦略を変更する前に、既存のドキュメントを移行してください。

スターターがアクティブであるが永続性ユニットを構成できない場合、スタートアップ時にエラーが報告されます。次の表では、これらのエラーについて説明します。

エラー
解決法

スターターが使用できる MongoClient がありません。

spring-boot-mongodb 依存関係を追加し、spring.mongodb.* プロパティを設定するか、アプリケーションで MongoClient bean を宣言します。

データベース名は使用できません。

spring.mongodb.uriプロパティの接続文字列にデータベース名を追加するか、spring.mongodb.databaseプロパティを設定する か、MongoConfigurationContributor bean を使用して名前を設定します。

認証情報が異なるクライアントなど、スターターのみが使用するクライアントを介して接続するには、クライアントとデータベース名を設定する MongoConfigurationContributor beans を宣言します。この単一ノードを宣言すると、スターターはspringが管理するクライアントではなくクライアントを使用します。

複数の MongoConfigurationContributor beans を宣言すると、スターターは @Order アノテーションを使用して指定された順序でそれらを適用し、値を設定する最後の bean がその値を決定します。

スターターには、次の制限があります。

  • @DataJpaTest 注釈はサポートされていません。 MongoDBをテストするには、アプリケーションコンテキスト全体をロードする @SpringBootTest アノテーションを使用します。

  • スターターは、単一の永続性ユニットを構成します。複数の永続性ユニットを使用するには、追加のユニットを自分で構成します。