`
crazycat03
  • 浏览: 175523 次
  • 性别: Icon_minigender_2
  • 来自: 呼和浩特
社区版块
存档分类
最新评论

Compass---CompassSession

阅读更多

摘抄自compass API

public interface CompassSession

extends CompassOperations, CompassSearchSession, CompassIndexSession

 

是介于java application 和 Compass直接的一个主要接口。

 

提供对语义映射对象的基本操作(save,delete 和 load/get).session提供基于对象级别和Resource 级别(已索引的对象模型)的操作。CompassSession的操作室委托于底层的SearchEngine实现的,所以不需要直接访问SearchEngine.

 

   实现并非是线程安全的,每个线程/事务都要从Compass获得它自己的实例。

 

   如果CompassSession抛出一个异常,事务必须回滚并且session要舍弃,如果舍弃,CompassSession内部的状态可能会与搜索引擎的不一致。

 

  使用session依赖于事务是怎么管理的,最简单的形式就像这样:

 CompassSession session = compass.openSession();
 try {
      // do operations with the session
      session.commit(); // same as session.close()
 } catch (Exception e) {
      session.rollback();
 }
 

 

一个更复杂的包括使用CompassTransaction 完整控制的形式

 

 

 CompassSession session = compass.openSession();
 CompassTransaction tx = null;
 try {
          tx = session.beginTransaction();
          Object result = compassCallback.doInCompass(session);
          tx.commit();
          return result;
 } catch (RuntimeException e) {
          if (tx != null) {
                  tx.rollback();
          }
          throw e;
 } finally {
          session.close();
 }
 

 

以下为compass-reference里部分:

1 CompassSession的获取

CompassSession是从compass获得的,compass.openSession();

常用的获取方式:

CompassConfiguration conf =
new CompassConfiguration().configure().addClass(Author.class);
Compass compass = conf.buildCompass();
CompassSession session = compass.openSession();

 2 CompassSession 类型

位于顶部的全功能的CompassSession同时提供了搜索和索引的能力,Compass为搜索或索引提供了简单的API。

CompassSearchSession仅仅提供了搜索的功能,可用于下列方式:

CompassSearchSession session = compass.openSearchSession();
try {
...
CompassHits hits = session.find("jack london");
Author a = (Author) hits.data(0);
Resource r = hits.resource(0);
...
} finally {
session.close();
}

 CompassIndexSession只提供了索引功能:

CompassIndexSession session = compass.openIndexSession();
try {
...
session.save(author);
...
session.commit();
} catch (Exception e) {
session.rollback();
} finally {
session.

 

3 session生命周期

核心Compass接口用openSession()方法管理者CompassSession的创建,当beginTransaction()被CompassTransaction调用的时候,session就绑定到了所创建的transaction并且在贯穿在transaction的生命周期中使用。它意味着如果一个另外的session 在当前的事务中打开了,那么最初的session将会用openSession() 方法返回。

      当使用openSession方法时,Compass将会自动尝试并且结合一个已经运行着的外部事务。一个外部事务可以是一个已运行的本地Compass事务,一个JTA事务,或一个spring管理的事务。如果Compass管理结合一个已存在的外部事务,应用就不需要调用CompassSession的beginTransaction()方法或使用CompassTransaction去管理事务,这就

允许简单化Compass在一个进程中已存在事务的管理环境中的使用,不用要求清晰的Compass代码去管理一个Compass 事务

 

 

 

分享到:
评论

相关推荐

    Compass原理深入学习笔记

    【Compass原理深入学习笔记】 Compass是一款基于Apache Lucene的全文搜索引擎框架,它为开发者提供了更高级别的抽象层,简化了搜索引擎的集成工作。在理解Compass之前,我们需要先了解全文检索的基本概念和原理。 ...

    compass_使用详解.pdf compass_教程 compass_试用案例

    CompassSession session = compass.openSession(); ``` - **执行事务**: ```java session.beginTransaction(); ``` - **保存对象**: ```java session.save(product); ``` - **提交事务**: ```java ...

    compass学习笔记

    Compass概念: 1:Compass相当于hb的SessionFactory 2:CompassSession相当于hb的Session 3:CompassTransaction相当于hb的transaction。 <br>Compass也是采用CompassConfiguration(装载配置和映射文件...

    compass入门指南

    - **Compass**:类似于HibernateSessionFactory,用于创建线程安全的CompassSession实例,并提供索引级别的操作。 - **CompassSession**:类似于HibernateSession,用于执行保存、删除、查询和加载等操作。虽然轻量...

    COMPASS介绍

    2. **Compass**:类似于HibernateSessionFactory,用于创建线程安全的CompassSession实例,并提供索引级别的一些操作。 3. **CompassSession**:类似于HibernateSession,用于执行保存、删除、查找等搜索操作。它...

    COMPASS+spring构建自己的搜索引擎.pdf

    - **Compass**: 相当于Hibernate的`SessionFactory`,提供单线程使用的实例以打开`CompassSession`,并处理索引级别的操作。 - **CompassSession**: 类似于Hibernate的`Session`,执行搜索操作,如保存、删除、...

    Compass+ lucene 通用代码(脱离数据库)

    例如,`CompassSession`和`CompassTransaction`接口提供了对索引的CRUD操作,而`CompassQuery`则用于构建复杂的查询条件。 在实际应用中,我们可以将Compass与Spring框架结合,实现服务的依赖注入和事务管理。这...

    compass 笔记

    - **Compass** 类似于 Hibernate 的 `SessionFactory`,负责创建和管理 `CompassSession`。 - **CompassSession** 类似于 Hibernate 的 `Session`,用于管理索引和查询操作。 - **CompassTransaction** 类似于 ...

    巴巴运动网-产品搜索

    此外,利用Compass提供的API,如CompassSession和CompassTransaction,可以实现产品的创建、更新和删除操作,以及执行复杂的查询语句。 3. **实体类注解详解**: - `@Searchable`: 标记实体类为可被搜索的。 - `@...

Global site tag (gtag.js) - Google Analytics