第2章 アーキテクチャ


2.1. 概要

Hibernate Search はインデックス化コンポーネントとインデックス検索コンポーネントで構成されます。 いずれも Apache Lucene で支えられています。
エンティティがデータベースに対して挿入、更新または削除されるたびに、Hibernate Search はこのイベントを (Hibernate イベントシステムを使用して) 追跡し、インデックス更新をスケジュールします。すべてのインデックス更新は Apache Lucene API を使用せずに処理されます (「Hibernate Search および自動インデックスを有効化」 を参照)。
Apache Lucene のインデックスと交信するために、 Hibernate Search には DirectoryProvider に関する概念があります。 ディレクトリプロバイダは特定の Lucene Directory タイプを管理します。 ディレクトリプロバイダを設定してディレクトリターゲットを調整することができます (「Directory 構成」 を参照)。
また、Hibernate Search は Lucene インデックスを使用してエンティティを検索し管理エンティティのリストを返すのでめんどうなオブジェクトと Lucene ドキュメントのマッピングを行わなくてすみます。 同じ永続コンテキストは Hibernate と Hibernate Search で共有されます。実際には、FullTextSession は Hibernate Session 上に構築されるため、アプリケーションコードは統一された org.hibernate.Query または javax.persistence.Query を HQL、JPA-QL、 またはネイティブのクエリが行うのと全く同じ方法で使用できます。
効率を上げるために、Hibernate Search は、Lucene インデックスとの書き込み対話をバッチ処理します。期待される範囲に応じて 2 つのバッチ処理タイプが存在します。トランザクション外で、実際のデータベース操作の直後にインデックス更新操作が実行されます。この範囲は実際には設定されず、バッチ処理も実行されません。ただし、データベースと Hibernate Search のいずれの場合でもトランザクション内でオペレーションを実行することをお勧めします (JDBC または JTA)。 トランザクション内の場合、 インデックス更新操作はトランザクションのコミットフェーズに対してスケジュールされ、トランザクションがロールバックする場合は破棄されます。バッチ処理範囲はトランザクションです。以下の 2 つの即時的な利点があります。
  • パフォーマンス: バッチで操作を実行したとき Lucene のインデックス化は向上します。
  • ACIDity: 実行される作業はデータベーストランザクションにより実行される作業と同じ範囲を持ち、トランザクションがコミットされた場合にのみ実行されます。これは、厳密には ACID ではありませんが、ACID の動作は完全テキスト検索インデックスにはほとんど役に立ちません (インデックスをソースからいつでも再構築できるため)。
これら 2 つの範囲は (有名な) オートコミットとトランザクション動作の関係と同じと考えることができます (範囲なしとトランザクション)。パフォーマンスの観点からは、トランザクションモードが推奨されます。範囲の選択は透過的に行われます。Hibernate Search はトランザクションの存在を検出し、範囲を調整します。

注記

Hibernate Search は Hibernate/EntityManager の長い会話 (アトミック会話) で適切に動作します。また、ユーザーの要求に応じて、範囲の追加が考慮されます (接続可能メカニズムがすでに動作)。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat