4.2. エンティティーマッピングアノテーション
Java クラスにアノテーションを追加して、エンティティーをインデックスにマップします。
Hibernate Search API
Data Grid は Hibernate Search API を使用して、エンティティーレベルでインデックス作成の詳細な設定を定義します。この設定には、アノテーションが付けられたフィールド、使用するアナライザー、ネストされたオブジェクトのマッピング方法などが含まれます。
以下のセクションでは、Data Grid で使用するエンティティーマッピングアノテーションに適用される情報を提供します。
これらのアノテーションの詳細は、the Hibernate Search manual を参照してください。
@DocumentId
Hibernate Search とは異なり、@DocumentId
を使用してフィールドを識別子としてマーク付けすると、Data Grid は値を保存するために使用されるキーになります。すべての @Indexed
オブジェクトの識別子は、値を保存するために使用されるキーになります。@Transformable
、カスタム型、およびカスタム FieldBridge
実装の組み合わせを使用して、キーのインデックス化方法をカスタマイズできます。
@Transformable keys
各値のキーはインデックス化する必要があり、キーインスタンスを String
で変換する必要があります。Data Grid には、共通のプリミティブをエンコードするためのデフォルトの変換ルーチンが含まれていますが、カスタムキーを使用するには org.infinispan.query.Transformer
の実装を提供する必要があります。
アノテーションを使用したキートランスフォーマーの登録
キークラスに org.infinispan.query.Transformable
のアノテーションを付け、カスタムトランスフォーマー実装が自動的に選択されます。
@Transformable(transformer = CustomTransformer.class) public class CustomKey { ... } public class CustomTransformer implements Transformer { @Override public Object fromString(String s) { ... return new CustomKey(...); } @Override public String toString(Object customType) { CustomKey ck = (CustomKey) customType; return ... } }
キャッシュインデックス設定を介したキートランスフォーマーの登録
組み込みおよびサーバー設定の両方で、key-transformers
xml 要素を使用します。
<replicated-cache name="test"> <indexing> <key-transformers> <key-transformer key="com.mycompany.CustomKey" transformer="com.mycompany.CustomTransformer"/> </key-transformers> </indexing> </replicated-cache>
または、Java 設定 API(組み込みモード) を使用します。
ConfigurationBuilder builder = ... builder.indexing().enable() .addKeyTransformer(CustomKey.class, CustomTransformer.class);