Overview
Hibernate ORM enables you to use Java objects to perform database operations, and you can use the MongoDB Extension for Hibernate ORM to simplify your application's interactions with MongoDB data. This guide shows how to install the Hibernate ORM extension, set up a MongoDB deployment, and create a Java application that defines classes mapped to MongoDB collections.
Tip
MongoDB Atlas は、MongoDB 配置をホストする完全管理のクラウドデータベース サービスです。このガイドの手順に従い、独自の無料(クレジット カード不要)MongoDB Atlas 配置を作成できます。
ダウンロードとインストール
依存関係のインストール
開発を開始する前に、ローカル マシンに次の依存関係がインストールされていることを確認してください。
Java version 17 or later
注意
このチュートリアルでは、IDE で Maven または Gradle を使用してアプリケーションを作成する方法を示します。 IDE を使用しない場合は、プロジェクトのセットアップ方法は「 Maven のビルド 」または「 新しい Gradle ビルドの作成 」を参照してください。
拡張機能のインストール
IDE に、MongoHibernateQuickstart という名前の新しい Maven または Gradleプロジェクトを作成します。 Maven プロジェクトの場合は、次の依存関係を pom.xmlファイルに追加します。
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-hibernate</artifactId> <version>1.0.0-alpha0</version> </dependency> </dependencies>
Gradle プロジェクトの場合は、次の依存関係を build.gradleファイルに追加します。
dependencies { implementation("org.mongodb:mongodb-hibernate:1.0.0-alpha0") }
IDE で、プロジェクトが再ロードされているか、 が同期されている ことを確認してください。
これらの手順を完了すると、 Hibernetes ORM 拡張機能がインストールされ、 IDE に新しい Maven または Gradleプロジェクトが設定されます。
MongoDB 配置の作成
MongoDB Atlas では無料階層の MongoDB 配置を作成して、データを保存および管理できます。 MongoDB Atlas は、MongoDB databaseをクラウドでホストおよび管理します。
これらの手順を完了すると、Atlas に新しい無料階層の MongoDB 配置が作成され、データベースユーザーの認証情報が作成され、データベースに サンプル データがロードされます 。
接続文字列の作成
MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。
接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。
これらの手順を完了すると、ユーザー名、パスワード、およびデータベース を含む接続文字列が作成されます。
アプリケーションを構成する
Hibernetes ORM 拡張機能をインストールし、 MongoDB Atlasクラスターを作成したら、 MongoDBに接続するJavaアプリケーションを作成できます。
アプリケーションをMongoDBに接続する
MongoHibernateQuickstart プロジェクトの src/main/resourcesディレクトリに移動し、アプリケーションの構成設定を保存する hibernate.cfg.xml という名前の新しいファイルを作成します。
次のコードをこのファイルにコピーします。
<hibernate-configuration> <session-factory> <property name="hibernate.dialect">com.mongodb.hibernate.dialect.MongoDialect</property> <property name="hibernate.connection.provider_class"> com.mongodb.hibernate.jdbc.MongoConnectionProvider </property> <property name="jakarta.persistence.jdbc.url"> connection-string </property> <property name="hibernate.show_sql">true</property> <mapping class="org.example.Movie"/> </session-factory> </hibernate-configuration>
jakarta.persistence.jdbc.urlプロパティで、connection-string プレースホルダーを前の手順で作成した接続文字列に置き換えます。
セッションを管理するためのユーティリティクラスを作成する
注意
デフォルトのパッケージ ディレクトリ
このチュートリアルでは、Maven と Gradle のデフォルトのorg.exampleパッケージを使用し、アプリケーションファイルを src/main/java/org.exampleディレクトリに追加します。別のパッケージ名を使用する場合は、対応するディレクトリにファイルを作成していることを確認してください。
プロジェクトの src/main/java/org.exampleディレクトリに、HibernateUtil.java という新しいファイルを作成します。このユーティリティクラスは、 hibernate.cfg.xml構成ファイルに基づいて 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().configure("hibernate.cfg.xml").buildSessionFactory(); private HibernateUtil() {} public static SessionFactory getSessionFactory() { return SESSION_FACTORY; } }
Movieエンティティを定義する
プロジェクトのorg.example ディレクトリに、 という新しいファイルを作成します。このファイルには、AtlasサンプルデータセットのMovie.java Moviesample_mflix.moviesサンプルコレクションを表す エンティティが含まれています。
次のコードをこのファイルにコピーします。
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; public class Movie { private ObjectId id; private String title; private String plot; private int year; private String[] cast; public Movie(String title, String plot, int year, String[] cast) { this.title = title; this.plot = plot; this.year = year; this.cast = cast; } 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 String[] getCast() { return cast; } public void setCast(String[] cast) { this.cast = cast; } }
このファイルは、次のフィールドを持つ Movie エンティティを定義します。
id: MongoDB_idフィールドにマッピングされる、映画の一意の識別子。title:映画のタイトル。year: 映画が公開された年。cast: 映画のキャスト メンバーを表す string の配列。
メインのアプリケーションクラスを定義する
プロジェクトの org.exampleディレクトリに、Main.java という新しいファイルを作成します。このファイルには、アプリケーションのロジックが保存されるメインのアプリケーションクラスが含まれています。
次のコードをこのファイルにコピーします。
package org.example; import org.hibernate.Transaction; import org.hibernate.Session; 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(); } }
これらの手順を完了すると、 Hibernetes ORM 拡張機能を使用し、 MongoDBデプロイに接続するように構成されたJavaアプリケーションが作成されます。アプリケーションのファイル構造は次のとおりです。
MongoHibernateQuickstart ├── src │ └── main │ ├── java │ │ └── org.example │ │ ├── HibernateUtil.java │ │ ├── Main.java │ │ └── Movie.java │ └── resources │ └── hibernate.cfg.xml ├── .gitignore ├── pom.xml (for Maven projects) └── build.gradle (for Gradle projects)
サンプル クエリの実行
Movie オブジェクトに対して クエリを実行できます。これは拡張機能によってMongoDBクエリに変換されます。
フィールドでクエリを実行するtitle
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()); }
このコードでは、 Hibernetes ORM の Hibernet Query Language(HQL) を使用して、title の値が "Little Women" である sample_mflix.movies ドキュメントを検索します。次に、各結果の title と year の値が出力されます。
Tip
HQL の詳細については、 Hibernet ORM ユーザーガイドの 「非表示のクエリ言語」 を参照してください。
アプリケーションを実行する
IDE で Main.javaファイルを実行します。出力には、データベースコマンドと検索されたドキュメントの詳細が含まれます。
Hibernate: {"aggregate": "movies", "pipeline": [{"$match": {"title": {"$eq": {"$undefined": true}}}}, {"$project": {"_id": true, "cast": true, "plot": true, "title": true, "year": true}}]} Title: Little Women, Year: 1949 Title: Little Women, Year: 1994
MongoDB へのデータの書込み (write)
Movie オブジェクトを作成および変更することで、 MongoDBデプロイにデータを書き込むことができます。
moviesコレクションへのドキュメントの挿入
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 String[]{"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() メソッドを使用してそれがデータベースに保存されます。
ドキュメントの更新
次のコードを Main.javaファイルに追加して、前のステップで作成した Movieインスタンスを更新します。
var updatedCast = new String[]{"Jesse Eisenberg", "Kieran Culkin", "Will Sharpe", "Jennifer Grey"}; myMovie.setCast(updatedCast); System.out.println("Movie updated with new cast member: " + updatedCast[3]);
このコードは、myMovie エンティティインスタンスの castフィールドをアップデートします。 Hibernetes ORM 拡張機能は、 データベース内の対応するドキュメントにこの変更を適用します。
アプリケーションを実行する
IDE で Main.javaファイルを実行します。出力には、書込み (write) 操作に関する詳細が含まれます。
Hibernate: {"insert": "movies", "documents": [{"cast": {"$undefined": true}, "plot": {"$undefined": true}, "title": {"$undefined": true}, "year": {"$undefined": true}, "_id": {"$undefined": true}}]} Hibernate: {"delete": "movies", "deletes": [{"q": {"_id": {"$eq": {"$undefined": true}}}, "limit": {"$numberInt": "0"}}]} Movie created with ID: <ObjectId> Movie updated with new cast member: Jennifer Grey Movie deleted with ID: <ObjectId>
次のステップ
チュートリアルを完了しました。
注意
このチュートリアルで問題が発生した場合は、このページの右側にある Rate this pageタブを使用してフィードバックを送信してください。
MongoDB Stack Overflowタグ または MongoDB Reddit Community を使用して、一般的な質問のサポートを見つけることができます。
このチュートリアルでは、 MongoDB AtlasでホストされているMongoDBデプロイに接続し、 Hibernetes ORM 拡張機能 を使用してデータを操作するJavaアプリケーションを作成しました。
Hibernetes ORM 拡張機能の詳細については、次のリソースを参照してください。
Hibernate ORM extension API documentation
GitHub の mongo- Hibernetesソースコード
ORM ドキュメントの非表示
To view a Getting Started tutorial that shows how to install the Hibernate ORM extension and interact with book data, see the Getting Started With Hibernate ORM and MongoDB Foojay blog post.

