作者: 地狱男爵
Compass也提供另一直配置, 使用java5 的annotation 来进行OSEM.
下面就是简单的Plain Old Java
Object (POJO)类型的搜索类,使用了Compass annotations.在运行时刻, compass抽取对象属性插入和相应源数据索引中.
public class Product {
@SearchableId
private Integer id;
private Category category;
private String name;
private Double unitprice;
@SearchableProperty(name = "name")
public String getName() {
return this.name;
}
@SearchableComponent (refAlias = "category")
public Category getCategory() {
return this.category;
}
public Double getUnitprice() {
return this.unitprice;
}
//other
setter/getter...
1. 所有的持久化类必须有默认构造函数(没参数的构造函数).
2. OSEM要求映射类JavaBean必须有一个或更多的id主建.
id属性可以是对象类型,例如java.lang.String or
java.util.Date.
并且类注解使用@SearchableClassConverter或者使用定义Converter(通常继承Compass
AbstractBasicConverter).
3. 使用JavaBean规范, getter/setter.
更多:@Searchable,@SearchableId,@SearchableProperty and So On Look:
http://www.opensymphony.com/compass/content/documentation.html
OSEM: 对象搜索引擎影影射(Object Search Engine Mapping),通过xml配置文件,提供了POJO's (Plain Old
Java Objects)到搜索引擎.
如果采用XML的配置,一般都是 *.cpm.xml 形式
.
1) package指定了对应java类的包名,
2)class为pojo类名.contract为公共部分, 子类被可以extends.Property 对 java类的属性。
3)资源的Property引用的Search Engine meta-data.
注意: id为类标识.
<compass-core-mapping package="org.springside.bookstore.domain"><contract alias="product">
<id name="id"/>
<property name="name">
<meta-data>${springside.name}</meta-data>
</property>
<property name="descn">
<meta-data>${springside.descn}</meta-data>
</property>
</contract><class name="Book" alias="${springside.book}" extends="product">
<property name="author">
<meta-data>${springside.author}</meta-data>
</property>
<property name="publisher">
<meta-data>${springside.publisher}</meta-data>
</property>
</class></compass-core-mapping>