本文章是对Compass官方文档的摘抄,方便查询
[b]1.CompassSession的用法[/b]
[b]2.CompassTransaction的用法[/b]
[b]3.CompassSession对搜索和索引都有效果,Compass也为搜索或者索引提供单独的简化的API:CompassSearchSession和CompassIndexSession,用法与CompassSession一致[/b]
[b]4.Template(模板)和CallBack(回调)[/b]
CompassTemplate和CompassCallback,使用模板的话可以省略事务相关代码的书写,如:
[b]1.CompassSession的用法[/b]
CompassConfiguration conf =
new CompassConfiguration().configure().addClass(Author.class);
Compass compass = conf.buildCompass();
CompassSession session = compass.openSession();
try {
...
session.save(author);
CompassHits hits = session.find("jack london");
Author a = (Author) hits.data(0);
Resource r = hits.resource(0);
...
session.commit();
} catch (CompassException ce) {
session.rollback();
}
[b]2.CompassTransaction的用法[/b]
CompassConfiguration conf =
new CompassConfiguration().configure().addClass(Author.class);
Compass compass = conf.buildCompass();
CompassSession session = compass.openSession();
CompassTransaction tx = null;
try {
tx = session.beginTransaction();
...
session.save(author);
CompassHits hits = session.find("jack london");
Author a = (Author) hits.data(0);
Resource r = hits.resource(0);
...
tx.commit();
} catch (CompassException ce) {
if (tx != null) tx.rollback();
} finally {
session.close();
}
[b]3.CompassSession对搜索和索引都有效果,Compass也为搜索或者索引提供单独的简化的API:CompassSearchSession和CompassIndexSession,用法与CompassSession一致[/b]
[b]4.Template(模板)和CallBack(回调)[/b]
CompassTemplate和CompassCallback,使用模板的话可以省略事务相关代码的书写,如:
CompassConfiguration conf =
new CompassConfiguration().configure().addClass(Author.class);
Compass compass = conf.buildCompass();
CompassTemplate template = new CompassTemplate(compass);
template.save(author); // open a session, transaction, and closes both
Author a = (Author) template.execute(new CompassCallback() {
public Object doInCompass(CompassSession session) {
// all the actions here are within the same session
// and transaction
session.save(author);
CompassHits hits = session.find("london");
...
return session.load(id);
}
});