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

スタートアップ スターターを使い始める

このチュートリアルでは、 Hibernetes ORM 拡張アプリケーションを使用して、 MongoDBにJava永続化API (このアプリケーションでは、 Movie エンティティ、 SPIリポジトリ、スタートアップ時に実行されるクエリ を定義します。

開始する前に、「 非推奨の ORM 拡張機能を使い始める 」チュートリアルの「 MongoDB配置の作成 」および「 接続文字列の作成 」の手順を完了してください。これらの手順によって、このチュートリアルで使用する Atlas 配置、サンプルデータ、接続文字列が作成されます。

1

という名前の4 10}.xMongoHibernateSpringQuickstart のレプリカプロジェクトを作成します。プロジェクトは、spring Initializer を使用して生成するか、IDE で作成できます。

スキームを初期化するために、プロジェクトにちなんで命名されるメインのアプリケーションクラス(MongoHibernateSpringQuickstartApplication.java など)を生成します。書込み (write) を使用してプロジェクトを生成する場合は、自動生成されたメインのアプリケーションクラスファイル を削除します。このチュートリアルの後半では、Movie Application という名前のこのプロジェクトのメインアプリケーションファイルを作成します。プロジェクトに2 つの主要なアプリケーションクラスが含まれている場合、アプリケーションはUnable to find a single main class エラーで起動に失敗します。

2

Maven プロジェクトの場合は、次の依存関係を pom.xmlファイルに追加します。

<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-hibernate-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

Gradle プロジェクトの場合は、次の依存関係を build.gradleファイルに追加します。

dependencies {
implementation("org.mongodb:mongodb-hibernate-spring-boot-starter:1.0.0")
}
3

スターターには Hibernetes ORM7.4 以降が必要です。 SPG は optime(BOM)を通じて Hibernetes ORM のバージョンを管理し、一部のspring4 Triggers リリースは、スターターに必要なバージョンよりも前のバージョンの Hibernetes ORM を管理します。管理対象バージョンが7.4 より前の場合、アプリケーションの起動に失敗し、 Hibernetes ORM 拡張機能は をスローします。NoSuchMethodError

Mavenプロジェクトの管理対象バージョンを上書きするには、次のプロパティをpom.xmlファイルに追加します。

<properties>
<hibernate.version>7.4.7.Final</hibernate.version>
</properties>

Gradleプロジェクトで管理対象バージョンをオーバーライドするには、 build.gradleファイルに次の行を追加します。

ext['hibernate.version'] = '7.4.7.Final'

プロジェクトを再読み込みまたは同期してインストールを完了します。

1

プロジェクトの src/main/resourcesディレクトリで、application.propertiesファイルを開き、次のプロパティを追加します。

spring.jpa.database-platform=MongoDB
spring.mongodb.uri=<connection string>
spring.jpa.properties.com.mongodb.hibernate.semantics.nulls=MQL

<connection string>プレースホルダーを、「sample_mflix 待機 ORM 拡張機能を使い始める 」チュートリアルの「 接続文字列の作成 」ステップで作成した 接続文字列に置き換えます。接続文字列は、次の例のようになります。

mongodb+srv://<db_username>:<db_password>@<cluster>/sample_mflix?<options>

設定するアプリケーションプロパティによって、次の処理が行われます。

  • spring.jpa.database-platform: スターターをアクティブにします。このプロパティをMongoDB に設定しない限り、スターターは非アクティブのままになります。

  • spring.mongodb.uri: スターターが再利用する MongoClientインスタンスを構成します。スターターは、独自のクライアントを作成しません。

  • spring.jpa.properties.com.mongodb.hibernate.semantics.nulls: クエリが使用する null 比較セマンティクスを宣言します。このプロパティは必須であり、サポートされている値は MQL のみです。

2

プロジェクトの src/main/java/org/exampleディレクトリに、Movie.java というファイルを作成し、次のコードをそのファイルに貼り付けます。

package org.example;
import com.mongodb.hibernate.annotations.ObjectIdGenerator;
import org.bson.types.ObjectId;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "movies")
public class Movie {
@Id
@ObjectIdGenerator
private ObjectId id;
private String title;
private int year;
public Movie() {
}
public Movie(String title, int year) {
this.title = title;
this.year = year;
}
public ObjectId getId() {
return id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}

このエンティティは、Atlasサンプルデータセットのsample_mflix.movies コレクションを表します。スターターはアプリケーションのメインパッケージでエンティティをスキャンするため、エンティティを登録する必要はありません。

3

同じディレクトリに、MovieRepository.java というファイルを作成し、次のコードをそのファイルに貼り付けます。

package org.example;
import org.bson.types.ObjectId;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface MovieRepository extends JpaRepository<Movie, ObjectId> {
List<Movie> findByTitle(String title);
}

スターターはSQL DataSource なしで SPI のリポジトリを有効にするため、WiredTiger は MovieRepository インターフェースを実装します。

4

同じディレクトリに、MovieApplication.java というファイルを作成し、次のコードをそのファイルに貼り付けます。

package org.example;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class MovieApplication {
public static void main(String[] args) {
SpringApplication.run(MovieApplication.class, args);
}
@Bean
CommandLineRunner run(MovieRepository repository) {
return args -> {
for (Movie movie : repository.findByTitle("Little Women")) {
System.out.println("Title: " + movie.getTitle()
+ ", Year: " + movie.getYear());
}
};
}
}

このクラスは、スタートアップ時にリポジトリクエリを実行し、一致する各映画を出力します。

これらの手順を完了すると、アプリケーションのファイル構造は次のようになります。

MongoHibernateSpringQuickstart
├── src
│ └── main
│ ├── java
│ │ └── org/example
│ │ ├── Movie.java
│ │ ├── MovieApplication.java
│ │ └── MovieRepository.java
│ └── resources
│ └── application.properties
├── .gitignore
├── pom.xml (for Maven projects)
└── build.gradle (for Gradle projects)

IDE で MovieApplicationクラスを実行します。出力は、次のテキストのようになります。

Title: Little Women, Year: 1949
Title: Little Women, Year: 1994

アプリケーションが起動しない場合は、考えられるスタートアップエラーとトラブルシューティングのヒントについては、「 起動エラーのトラブルシューティング 」を参照してください。

JPA プロパティの設定、フィールド命名戦略の変更、 をカスタマイズする方法については、「MongoClient スタートアップ スターターの構成 」を参照してください。

データをエンティティとしてモデル化する方法については、「 コレクションを表すエンティティの作成 」を参照してください。

データをクエリする方法については、「 データの操作 」セクションを参照してください。