详析 Jackrabbit 各个模块 (四)

本章讲解Jackrabbit中的Version模块。

如果是JCR操作一个节点,通常代码是如下这个样子。


		Node testNode = session.getRootNode();
		testNode.addNode("foobar");
		session.save();


如果这个节点支持version,则会有checkout/checkin的操作。


		testNode.checkout();
		testNode.addNode("foobar");
		session.save();
		testNode.checkin();


checkout相当于一把小锁,它定义了这个节点的下一个版本将由这个Session来产生。

接下来,我贴几点与Version有关的概念:
1. 一个会产生Version的节点,它的Node Type 一定包含有 mix:versionable。在Jackrabbit里面,只有实现了mix:versionable的Node 才可以做checkin/checkout的操作。
2. 要让一个Node产生新的Version, 你做的第一步应当是checkout, 然后修改其中的各个属性,然后是checkin。 在Jackrabbit的定义文件里面,一个支持Version的节点一定有一个属性叫做 jcr:isCheckout, 他的默认值是true
3. 我们都知道,Node 在 Jackrabbit是一个树形的结构,而Node 的 Version 和 Node 的存储方式有很大的不同。在Jackrabbit里面,每一个支持Version的 Node 都有一个 jcr:versionHistory 属性。这个属性值是一个引用(reference), 它就指向存在于 version storage 里面的 version history 节点。而version history 的存储可以说是平面的,类似于key-value的存储方式,key存在于node 上, 而value存储于 version storage 里面。
4. Version 里面还有个概念叫做 Version label, 它是用来快速定位 一个Version History 里面的 Version  的。
你可以通过 vh.getVersionByLabel(label) 快速拿到一个Version, 而不需要通过skip方法去拿。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值