Jackrabbit OCM(二)——ObjectContentManager对象

来源:互联网 发布:sql显示前10行 编辑:程序博客网 时间:2024/05/21 02:35

上一篇文档中已提到过ObjectContentManager对象是OCM框架对外提供的非常重要的API,通过它可以完成如下功能:

一、Jackrabbit CURD操作:

在Hinbernate框架中,数据库的CURD操作主要通过Session对象来完成,ObjectContentManager对象提供了类似于Session的相关方法,来操纵jackrabbit的存储结构,包括:
ocm.insert(entity);//新增实体
ocm.update(entity);//更新实体
ocm.remove(entity);//删除实体
注:以上方法对持久层的操作都是瞬态的,最后需要调用ocm.save()方法来执行保存操作,类似于事物的提交。
 
除此之外ObjectContentManager对象还声明了大量的get*()方法用于存储结构查询
查询参数query由QueryManager对象负责创建、管理,可通过ObjectContentManager来获取该对象的实例:
QueryManager queryManager=ocm.getQueryManager();
查询条件由Filter对象封装,相当于sql语句中的where从句:
Filter filter=queryManager.createFilter(Entity.class);//Entity.class为要查询的实体类
filter.addEqualTo(prop,value);//指定查询条件
filter.setScope(path);//指定查询范围,在哪个路径节点下
查询语句由Query对象封装:
Query query=queryManager.createQuery(filter);
有了Query对象之后,便可以通过ObjectContentManager所提供的API方法返回相应的查询结果:
ocm.getObject(query);//返回单一查询对象
ocm.getObjects(query);//返回查询集合
ocm.getObjectIterator(query);//返回查询结果遍历器
 
二、Locking功能
1.加锁功能通过ObjectContentManager对象的lock方法来实现
String lockToken=ocm.lock(nodePath,isDeep,isSessionScoped);
方法参数:
nodePath:节点路径
isDeep:是否深度加锁
isSessionScoped:是否是session生命周期内的加锁
2.解锁操作通过unlock方法来完成,需要有加锁时候的令牌
ocm.unlock(nodeoath,lockToken);
3.判断节点是否处于锁定状态:
ocm.isLock(nodePath);
 
三、Version功能
ocm.checkout(nodePath);//当前版本node节点签出
ocm.checkin(nodePath,lables);//版本签入,并附加相关标签
ocm.getAllVersionLabels(nodePath);//指定节点的所有标签信息
ocm.getVersionLabels(nodePath,version);//指定节点在指定版本的标签信息
原创粉丝点击