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

Hibernetes ORM 拡張機能を使い始める

Hibernate ORM を使用すると、Javaオブジェクトを使用してデータベース操作を実行できます。また、Hibernate ORM 用の MongoDB Extension を使用すると、アプリケーションと MongoDB データのやり取りを簡素化できます。このガイドでは、Hibernate ORM 拡張機能のインストール、MongoDB配置を設定し、MongoDBコレクションにマップされたクラスを定義するJavaアプリケーションを作成する方法を示します。

Tip

MongoDB Atlas は、MongoDB 配置をホストする完全管理のクラウドデータベース サービスです。このガイドの手順に従い、独自の無料(クレジット カード不要)MongoDB Atlas 配置を作成できます。

1

開発を開始する前に、ローカル マシンに次の依存関係がインストールされていることを確認してください。

注意

このチュートリアルでは、IDE で Maven または Gradle を使用してアプリケーションを作成する方法を示します。IDE を使用しない場合は、プロジェクトのセットアップ方法はMaven のビルドまたは新しい Gradle ビルドの作成を参照してください。

2

IDE に、MongoHibernateQuickstart という名前の新しい Maven または Gradleプロジェクトを作成します。Maven プロジェクトの場合は、次の依存関係を pom.xmlファイルに追加します。

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

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

dependencies { implementation("org.mongodb:mongodb-hibernate:1.0.0")}

IDE で、プロジェクトが 再ロードされているか、 が同期されている ことを確認してください。

これらの手順を完了すると、 Hibernetes ORM 拡張機能がインストールされ、 IDE に新しい Maven または Gradleプロジェクトが設定されます。

MongoDB Atlas で無料のクラスターを作成して、データを保存および管理できます。MongoDB Atlas は、クラウドで MongoDB データベースをホストし、管理します。

1

MongoDB の使用開始ガイドを完了して、新しい Atlas アカウントを設定し、サンプルデータを新しい無料階層のMongoDB配置にロードします。Cloud Deployment タブの手順に従って、クラウドにMongoDB Atlas の配置を作成します。

2

データベースユーザーを作成 したら、そのユーザーのデータベースユーザー名とデータベースパスワードを安全な場所に保存して、後のステップで使用します。

これらの手順を完了すると、Atlas に新しい無料クラスター、データベースユーザーの認証情報、およびデータベースにロードされたサンプルデータが用意されます。

MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。

接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。

1

前のステップ で作成した配置の接続文字列を取得するには、Atlas アカウントにログして「Clusters 」セクションに移動します。次のスクリーンショットに示すように、新しい配置で [Connect] ボタンをクリックします。

Atlas UI のクラスター セクションの接続ボタン

次に、Connect your application セクションに進みます。Driver 選択メニューから「Java」を選択し、Version 選択メニューからインストールしたバージョンに最適なバージョンを選択します。

2

次のスクリーンショットに示すように、接続文字列の右側にある ボタンをクリックして、接続stringをクリップボードにコピーします。

UI の接続 コピーstring ボタンAtlas
3

後で使用するために接続文字列を安全なロケーションに保存します。<db_username> と <db_password>接続文字列のプレースホルダーを、データベースユーザーのユーザー名とパスワードに置き換えます。

4

アプリケーションが後のステップで使用する sample_mflixサンプルデータベースに接続するには、接続文字列にデータベース名を追加します。

接続文字列は、次の例のようになります。

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

これらの手順を完了すると、ユーザー名、パスワード、およびデータベースを含む接続文字列が作成されます。

Hibernetes ORM 拡張機能をインストールし、 MongoDB Atlasクラスターを作成したら、 MongoDBに接続するJavaアプリケーションを作成できます。

1

MongoHibernateQuickstart プロジェクトの src/main/resourcesディレクトリに移動し、アプリケーションの構成設定を保存する hibernate.properties という名前の新しいファイルを作成します。

次のコードをこのファイルにコピーします。

jakarta.persistence.jdbc.url=<connection string>com.mongodb.hibernate.semantics.nulls=MQL

jakarta.persistence.jdbc.urlプロパティで、<connection string> プレースホルダーを前の手順で作成した接続文字列に置き換えます。

MongoDB 接続文字列は、hibernate.dialect プロパティを MongoDB に自動的に構成します。

com.mongodb.hibernate.semantics.nulls プロパティは、null 値を比較するクエリが MQL セマンティクスに従うことを保証します。このプロパティの詳細については、「クエリの指定」ガイドの「必須の Null セマンティクス構成プロパティ」を参照してください。

2

注意

デフォルトのパッケージ ディレクトリ

このチュートリアルでは、Maven と Gradle のデフォルトの org.exampleパッケージを使用し、アプリケーションファイルを src/main/java/org/exampleディレクトリに追加します。別のパッケージ名を使用する場合は、対応するディレクトリにファイルを作成していることを確認してください。

プロジェクトの src/main/java/org/exampleディレクトリに、HibernateUtil.java という新しいファイルを作成します。このユーティリティクラスは、構成ファイルに基づいて SessionFactory を作成します。

次のコードをこのファイルにコピーします。

package org.example; import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration; public final class HibernateUtil { private static final SessionFactory SESSION_FACTORY = new Configuration() .addAnnotatedClass(Movie.class) .buildSessionFactory(); private HibernateUtil() {} public static SessionFactory getSessionFactory() { return SESSION_FACTORY; }}
3

プロジェクトの org/exampleディレクトリに、Movie.java という新しいファイルを作成します。このファイルには、Atlasサンプルデータセットの sample_mflix.moviesサンプルコレクションを表す Movie エンティティが含まれています。

次のコードをこのファイルにコピーします。

package org.example; import com.mongodb.hibernate.annotations.ObjectIdGenerator;import org.bson.types.ObjectId;import java.util.List; 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 String plot; private int year; private List<String> cast; private List<String> directors; public Movie(String title, String plot, int year, List<String> cast, List<String> directors) { this.title = title; this.plot = plot; this.year = year; this.cast = cast; this.directors = directors; } public Movie() { } public ObjectId getId() { return id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPlot() { return plot; } public void setPlot(String plot) { this.plot = plot; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public List<String> getCast() { return cast; } public void setCast(List<String> cast) { this.cast = cast; } public List<String> getDirectors() { return directors; } public void setDirectors(List<String> directors) { this.directors = directors; }}

このファイルは、次のフィールドを持つ Movie エンティティを定義します。

  • id: MongoDB _idフィールドにマッピングされる、映画の一意の識別子。

  • title:映画のタイトル。

  • year: 映画が公開された年。

  • cast: 映画のキャストメンバーを表す string のリスト。

Tip

スキーマ修飾子

マッピングでは、@Table アノテーションの schema 要素を設定できます。schema 要素は、構成するデータベース内のコレクション名のプレフィックスとなります。詳細については、「Create Entities」ガイドの「スキーマ Qualifiers」セクションを参照してください。

4

プロジェクトの org/exampleディレクトリに、Main.java という新しいファイルを作成します。このファイルには、アプリケーションのロジックが保存されるメインのアプリケーションのクラスが含まれています。

次のコードをこのファイルにコピーします。

package org.example; import org.hibernate.Transaction;import org.hibernate.Session; import java.util.ArrayList;import java.util.List; public class Main { public static void main(String[] args) { var sf = HibernateUtil.getSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); // Add CRUD operations here tx.commit(); session.close(); sf.close(); } }

これらの手順を完了すると、Hibernate ORM拡張機能を使用し、MongoDB配置に接続するように構成されたJavaアプリケーションが作成されます。アプリケーションのファイル構造は次のとおりです。

MongoHibernateQuickstart├── src│ └── main│ ├── java│ │ └── org/example│ │ ├── HibernateUtil.java│ │ ├── Main.java│ │ └── Movie.java│ └── resources│ └── hibernate.properties├── .gitignore├── pom.xml (for Maven projects)└── build.gradle (for Gradle projects)

Movie オブジェクトに対してクエリを実行できます。これは拡張機能によってMongoDBクエリに変換されます。

1

Main.javaファイルに移動し、// Add CRUD operations here コメントの下に次のコードを貼り付けます。

var searchTitle = "Little Women";var results = session.createQuery("from Movie m where m.title = :t", Movie.class) .setParameter("t", searchTitle) .getResultList();for (var m : results) { System.out.println("Title: " + m.getTitle() + ", Year: " + m.getYear());}

このコードでは、Hibernate ORM の Hibernate クエリ言語(HQL)を使用して、title の値が "Little Women" である sample_mflix.movies ドキュメントを検索します。次に、各結果の title と year の値が出力されます。

Tip

HQL の詳細については、 Hibernet ORM ユーザーガイドの 非表示のクエリ言語 を参照してください。

2

IDE で Main.javaファイルを実行します。出力には、データベースコマンドと検索されたドキュメントの詳細が含まれます。

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

Movie オブジェクトを作成および変更することで、MongoDB配置にデータを書き込むことができます。

1

Main.javaファイルに次のコードを追加して、myMovie という Movie エンティティインスタンスを作成し、データベースに保存します。

var title = "A Real Pain";var plot = "Mismatched cousins David and Benji tour Poland to honor their grandmother. " + "Their adventure becomes complicated as old tensions resurface while exploring their family history.";var year = 2024;var cast = new ArrayList<>(List.of("Jesse Eisenberg", "Kieran Culkin", "Will Sharpe")); var myMovie = new Movie(title, plot, year, cast);session.persist(myMovie);System.out.println("Movie created with ID: " + myMovie.getId());

このコードでは、新しい Movie エンティティインスタンスが作成され、session.persist() メソッドを使用してそれがデータベースに保存されます。

2

次のコードを Main.javaファイルに追加して、前のステップで作成した Movieインスタンスを更新します。

myMovie.getCast().add("Jennifer Grey");System.out.println("Movie updated with new cast: " + myMovie.getCast());

このコードは、現在の cast 値を検索し、それに新しいキャスト メンバーを追加します。Hibernetes ORM 拡張機能は、データベース内の対応するドキュメントにこの変更を適用します。

3

次のコードを Main.javaファイルに追加して、myMovie エンティティインスタンスを削除する。

session.remove(myMovie);System.out.println("Movie deleted with ID: " + myMovie.getId());

このコードは、myMovie エンティティインスタンスとそれに対応するドキュメントをデータベースから削除します。

4

IDE で Main.javaファイルを実行します。出力には、書き込み (write) 操作に関する詳細が含まれます。

Movie created with ID: <ObjectId>Movie updated with new cast: [Jesse Eisenberg, Kieran Culkin, Will Sharpe, Jennifer Grey]Movie deleted with ID: <ObjectId>

チュートリアルを完了しました。

注意

このチュートリアルで問題が発生した場合は、このページの右側にある Rate this pageタブを使用してフィードバックを提出してください。

MongoDB Stack Overflowタグ または MongoDB Reddit Community を使用して、一般的な質問のサポートを見つけることができます。

このチュートリアルでは、MongoDB AtlasでホストされているMongoDB配置に接続し、Hibernate ORM拡張機能を使用してデータを操作するJavaアプリケーションを作成しました。

Hibernate ORM 拡張機能について詳しく学ぶには、次のリソースを参照してください。

Hibernate ORM 拡張機能をインストールし、書籍データと交流する方法を示す「使用開始」のチュートリアルについては、Hibernate ORM と MongoDB の使用開始 Foojay のブログ記事を参照してください。

このページを評価