对于讲domain object 映射到关系型数据库中,hibernate等持久性框架做了很多的工作,使得业务逻辑只需要和hibernate等持久层进行交互,而不需要直接和具体的数据库进行交互。
这给程序员带来了很大的方便,在业务逻辑处理上,只要针对domain object就可以。
使用Lucene进行索引、搜索开发的的时候,最经常碰到的概念就是Document 和Field,在程序中一个不得不去做的事情,就是将领域对象的属性映射到document的field中去,在搜索的时候,还要根据document和field来构建DTOs(Data transfor object)来返回给web层。这点和EJB的一个缺点很类似,返回给web层的不能是实体Bean,而是对实体Bean进行封装了的DTO。
我们希望的是有类似POJO的技术带来的便利一样,持久化的是domain object,返回给web层的也是也是domain object。
我们在对domain object进行索引和搜索的时候,也希望能够直接在domain object的层面进行操作,而不是直接去和document和field打交道。而我们利用compass框架就可以做到这样。
Compass是使用了Lucene的搜索引擎框架,它提供了一套开源的、高性能的、可以灵活配置的搜索框架,可以为用户的应用程序提供搜索功能。它还能与Spring、Hibernate等已有的框架进行整合。
Comapss的API结构和hibernate非常的相似,如果使用过hibernate的程序员使用comapass,基本上对API就很得心应手。
我们来看一个例子
CompassConfiguration config = new CompassConfiguration().configure(); Compass compass = config.buildComapss(); CompassSession session = compass.openSession(); CompassTransaction tx = null; try { tx = session.beginTransaction(); Book book = new Book(); book.setName("C++编程思想"); book.setAuthor(”Bruce Eckel“); session.save(book); tx.commit(); }catch(Exception e) { if(tx!=null) { tx.rollback(); } }finally { session.close(); }
Hiberanete的程序员对上面的代码应该是非常的熟悉吧,compass完全让你远离了Lucene的API,让你的代码更专注与业务逻辑,而把索引和搜索的事情都交给compass吧。这点还带来了一个优点,就是利用compass很容易的给已有的系统增加搜索的功能。
那么如何让domain object被compass使用呢,当然和hibernate一样,只要完成一些domai object的配置文件就可以了,具体的可以阅读compass附带的example。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索hibernate
, 框架
, object
, 搜索
, compass
, compassSession
domain
js object 索引、搜索索引、目录索引搜索引擎、搜索引擎索引、目录索引类搜索引擎,以便于您获取更多的相关知识。