Compass(汤阳光)

本文对比了Hibernate作为ORM框架与Compass作为搜索引擎框架在操作、配置、API、方法上的区别,强调了深入理解的重要性。通过实例展示了如何在两者中实现对象与数据库的交互,并提供了Compass的使用流程,包括导入jar包、配置映射、创建索引和搜索。文章旨在帮助开发者更好地理解两者在不同场景下的适用性和优缺点。
1. Hibernate 和 Compass 从总体上进行对比. 
Hibernate: 
是ORM框架,面向对象的操作.提供从对象 到表,从表到对象服务.是对JDBC的一种封装.
通过Session,提供save()/delete()/update()/get /load()/hql/QBC等方法.
Hibernate.cfg.xml 配置数据库链接信息,声明映射文件,和其他配置.
.hbm.xml 对象到表,属性到列的对应关系.
Compass: 
是 OSEM/Compass.从对象到 document,从 document 到对象.是对 Lucene  API 的一种封装.
通过 CompassSession.提供save()/delete()/update()/get/load()/queryString/Query等方 法.
Compass.cfg.xml 配置链接信息(索引目录),声明映射文件,和其他配置
.pom.xml 对象到document,属性到field的对应关系.

2. 在使用上进行对比. 
Hibernate: 
Hibernate.cfg.xml 
Configuration
①编程方式:
cfg. = new Configuation(); 
cfg.setPropxxx(); 
cfg.setPropxxx(); 
 
② 配置文件
Cfg = new Configration().configure(); 
Cfg.configure(“/hibernate.cfg.xml”); 
③Hbm.xml
使 用.hbm.xml文件(XML文件)
注解
Compass: 
主 配置
CompassConfiguration
①编程方式
Cfg = new CompassConfiguration() 
Cfg.set(“key”,”value”); 
 
② 配置文件
Cfg.configure(); 
//cfg.configure(“/compass.cfg.xml”); 
③ 映射文件:
XML文件
注解

3.API的对比 
Hibernate: 
Fg = new Configuration().configure(); 
Sf = cfg.buildSessionFactory(); 

Session = sf.openSession(); 
Tx = session.beginTransaction(); 

//do something 
//session.save/update/delete/…..() 

Tx.commit(); 
Session.close(); 

Compass: 
Cfg = new CompassConfiguration().configure(); 
Compass = cfg.buildCompass(); 

CompassSession session = compass.openSession(); 
CompassTransaction tx = session.beginTransaction(); 

//do something 
//session.save/update/delete/….() 

Tx.commit(); 
Session.close(); 

4.API: 
 Configuration --> CompassConfiguration
 SessionFactory --> Compass
 Session --> CompassSession
 Transaction --> CompassTransaction

5.Session方法: 
保 存: save() --> create()
删除:delete() --> delete()
Update() --> save()
saveOrUpdate() --> save()
get/load() --> get/load()

6.Compass 是使用过程 
1)导入 jar包 
2)对映射文件进行配置.这里采用的是注解 方式. 
@Searchable
在对象类前注释.
@SearchableId
在对象的ID属性上注释.
@SearchableProperty(store = Store.YES, index = Index.ANALYZED, boost = 2.0F)
在对象的普通属性上注释.
store = Store.YES是否存储
index = Index.ANALYZED是否建立索引
boost = 2.0F对排序起到作用.
3)加载相关的配置文件 
private Compass compass; 

    public void init() { 
        CompassConfiguration cfg = new CompassConfiguration(); 
        cfg.setConnection("./indexPath/");// 连接信息 
        cfg.addClass(Article.class);// 声明映射信息 
        // cfg.setSetting("key", "value");//其他配置 
        compass = cfg.buildCompass(); 
    } 

4)创建索引 

        CompassSession session = compass.openSession(); 
        CompassTransaction tx = session.beginTransaction(); 
        session.create(article); 
        tx.commit(); 
        session.close(); 

5)搜 索 
        List<Article> list = new ArrayList<Article>(); 
        CompassSession session = compass.openSession(); 
        CompassTransaction tx = session.beginTransaction(); 

        CompassHits hits = session.find(queryString); 
        for (int i = 0; i < hits.length(); i++) { 
            Article article = (Article) hits.data(i); 
            list.add(article); 
        } 
        tx.commit(); 
        session.close(); 
        
总结:         
通过上面实例行程序的编写,可以和昨天学习的 luncene 形成鲜明的对比.不过,老师说了,就像学习 Hibernate 一样,JDBC 没有学习好 Hibernate 是不可能学好的.同样 luncene ,基础没有学习好,Compass 是不可能学习好的,就算会用,也不能理解.不能达到一定的高度.所以,学习要了解的深入一些.不能只是皮毛.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开源技术之家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值