首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Compass学习之三:捎带Library例子的分析(一)

2012-10-25 
Compass学习之三:附带Library例子的分析(一)前言:因javaeye的每页显示有限制,所以只能分成3页来发布了。2.2

Compass学习之三:附带Library例子的分析(一)

前言:因javaeye的每页显示有限制,所以只能分成3页来发布了。

2.2.1 Library的分析

顾名思义,Library例子主要展现的是图书馆中的图书信息的检索。

2.2.1.1 项目文件基本构成

序号

文件类型

文件列表

备注

1

Compass的配置文件

compass.cfg.xml

?

2

检索类

Article.java

Author.java

Book.java

?

3

检索类映射文件

Article.cpm.xml

Author.cpm.xml

Book.cpm.xml

?

4

通用元数据定义文件

Library.cmd.xml

?

5

测试类

LibraryTests.java

?

6

其他类

Name.java

Identifiable.java

Name作为Author的辅助类。

Identifiable提供一个getId()方法。作为root级的检索类必须实现的接口。

2.2.1.2 项目文件分析

2.2.1.2.1??????? Compass的配置文件

Compass的配置文件是compass.cfg.xml。对于熟悉hibernate的人来说,compass的配置文件的组成结构极为熟悉,简直跟hibernate的配置文件是双胞胎。

以下是Library的配置内容:

?

?<compass>???

??? //表示索引的路径:\library\target\index\

? ? <setting name="compass.engine.connection">target/index</setting>

//通用的元数据定义文件。

??? <meta-data resource="org/compass/sample/library/library.cmd.xml" />?? </compass>

2.2.1.2.2??????? 检索类

序号

类名

描述

备注

1

Book

实现Identifiable接口

2

Article

文章

?

3

Author

作者

实现Identifiable接口

???

??? 3个检索类中,两个都实现了Identifiable接口。该接口很简单:

public interface Identifiable {

??? Long getId();

}

??? 这说明了什么呢?

??? 有了Id,即有一个证明,能被单独搜索到。Article是不应该被独立搜索到的,当系统检索到一个Article的时候,被返回的总是与之相关的Author对象,而非Article对象本身。这一点在实体的配置文件中得以充分体现。

??? 用Compass官方的语言来说,Book和Author是root级的检索类,而Article是非root级的检索类。

2.2.1.2.3??????? 检索类映射文件

序号

配置文件名

描述

备注

1

Book.cpm.xml

?

2

Article.cpm.xml

文章

?

3

Author.cpm.xml

作者

?

?

???? Compass的映射方式有以下三种:

??????? 1、RSEM(Resource/SearchEngine Mapping)

2、OSEM(Object/Search Engine Mapping)

3、XSEM(Xml/Search Engine Mapping)

本例中使用的是OSEM。具体的内容参见《compass-reference》。

热点排行