「compss-reference」翻訳計画の6.3索類マッピング(一)


もっと読む
 
6.3   検索クラスマップ
6.3.1   ID検索とメタデータ検索
各rootレベルの検索クラスは少なくとも1つの検索IDを定義します.このオブジェクトを一意に識別するためにIDを検索する.ユーザは複数の検索IDを定義することができ、クラスを一つの検索IDとしてもよい(自分の変換器を登録しなければならない、または検索IDコンポーネントを使ってマッピングする).
 
一般的に、検索IDは、検索メタデータとして定義する必要がない.ユーザが検索IDを定義していない場合、Complassは内部のメタデータID(解析後)を作成します.通常、プロキシIDに基づくテキスト検索は明確な定義が必要ではありません.IDを検索する必要がないなら、検索メタデータを定義しなければなりません.XMLマッピング方式を採用すると、検索IDに1つ以上の属性を定義することができます.annotationsを採用する場合、3つのオプションがあります.第一は検索IDにnameを提供し、第二はSearchable MetaDataを追加し、最後はSearchable MetaDatasです.もちろん、この3つのオプションは組み合わせて使うことができます.Complassは、annotationsの数を減らすために(annotation「地獄」を避けるために)、nameを提供すると、検索IDが自動的にSearchaemetaDataを作成する仕組みを使用しています.
 
ここではannotationsを用いて検索IDを定義する例がある.この例は、明示的なメタデータを作成していません.
 
 
 
@Searchable
public class Author {
	@SearchableId
	private Long id;
	// ...
}
 
 
同じマッピングについて、XML方式の定義を見てみましょう.
 

	
	
 
 
次にもう一つの例を見ます.効果は前の2つの例と同じです.この時はメタデータを定義しています.id:
 
@Searchable
public class Author {
	@SearchableId(name = "id")
	private Long id;
	// ...
}
 
 
以下はSearchable MetaDataを採用して同じ効果の定義を達成します.
 
@Searchable
public class Author {
	@SearchableId
	@SearchableMetaData(name = "id")
	private Long id;
	// ...
}
 
 
同じ効果のXML定義バージョン:
 

	
		id
	
	
  
 
6.3.2   IDコンポーネントを検索
一つの検索IDコンポーネントは、一つの合成対象、すなわち一つのidオブジェクトを表しています.このクラスのidとして使う以外に、他の検索コンポーネントと同じような使い方をしています.次に、annotationsを使ってID検索コンポーネントを定義する例を見ます.(この例では、Bはrootレベルの検索クラスではなく、ここでIDを定義する必要があります.)
 
@Searchable
public class A {
	@SearchableIdComponent
	private B b;
	// ...
}
@Searchable(root = false)
public class B {
	@SearchableId
	private long id1;
	@SearchableId
	private long id2;
}
 
 
 
同じ効果のXML展開方式:
 

	
	


	
	
  
 
6.3.3   パーティーを検索
Partマッピングを検索することは、コンポーネントの循環マッピングのサポートを提供する(方向コンポーネントマッピングもサポートされるが).コンポーネント類を包装類に写像すると、父の写像が写像されます.親マップは、ハッシュ(データを検索エンジンに永続化する)の親オブジェクトではなく、検索エンジンから親オブジェクトをロードすると、それを初期化するだけです.
 
以下は一例です.annotationsを使用して検索コンポーネントと検索パーティを定義しました.(この例では、Bはrootレベルの検索クラスではなく、ここでIDを定義する必要はありません.)
 
@Searchable
public class A {
	@SearchableId
	private Long id;
	@SearchableComponent
	private B b;
	// ...
}
@Searchable(root = false)
public class B {
	@SearchableParent
	private A a;
	// ...
}
 
 
 
同じ効果のXMLマッピング定義:
 

	
	
	


	
	
  
  
 
6.3.4   Property検索とメタデータ検索
簡単な関連から見れば、一つの検索Propertyは一つの種類のatributeまたはpropertyとすることができます.propertyを検索してオブジェクトをマッピングするatributeは、最終的にStringに変換して検索エンジンに格納されます.検索のタイプはオリジナルタイプとパッケージタイプ、java.util.Date、java.util.Calendar、Comppassの様々なタイプが自動的にサポートされています.また、ユーザー定義のタイプをサポートするためにカスタム変換器を使用することもできる.一つの検索メタデータは検索Property値(登録された変換器を使ってStringタイプに変換)を使って、一つの名前を通じてインデックスに格納されます.
 
XMLマッピングを使用すると、1つのpropertyマッピングに対応して、1つまたは複数のメタデータ項目が定義されるかもしれない.annotationを使用する場合、マッピングクラスに対応するatributeは、Searchable Propertyを定義しなければなりません.複数のメタデータのために、Searchable MetaDataまたはSearchable MetaDatasを表示的に定義することができる.Searchable MetaDataが定義されていない場合、Searchable Propertyは自動的にSearchable MetaDataを作成します.
 
次はannotationsを使用してPropertyを検索する例を定義します.この例はクラスのドメイン名に基づいて自動的に同じ名前の検索メタデータを作成します.
 
 
@Searchable
public class Author {
	// ...
	@SearchableProperty
	private String value;
	// ...
}
 
 
 
同じ効果のもう一つの表現方式(表示されたSearchable MetaDataを使用した):
 
@Searchable
public class Author {
	// ...
	@SearchableProperty
	@SearchableMetaData(name = "value")
	private String value;
	// ...
}
 
 
同じ効果のXMLマッピング定義:
 

	
	
		value
	
	
 
 
 
注:「commpass-reference」翻訳計画