从JCR和Jackrabbit开始我不明白工作空间是什么以及如何使用它。为什么它首先被命名为工作空间?存储库是数据库,工作空间如表格和项目如行(或几乎)?
答案 0 :(得分:6)
每个JCR工作区就像内容树中的不同根,因此您可以在工作区A中的/ foo处创建一个节点,在工作区B中创建一个不同的节点/ foo。
节点可以在其他工作空间中具有相应的节点:工作空间A的/ foo节点可以克隆到工作空间B中的/ foo,从而创建相应的节点。两个节点可以在一段时间内保持自己的生命,同时保持相应的状态,这允许稍后用一个JCR呼叫更新另一个节点的内容。
可以用于内容分段,例如,一个工作区保存网站的实时内容,而另一个工作区保存分阶段内容。
我不确定与数据库的比较是什么,可能是具有某些功能的不同模式,这些模式允许使用另一组数据更新一组表。
在我的团队(Apache Sling,Adobe CQ / AEM)中,我们总是使用单个工作区,根据我的经验,多个工作区会使事情变得更加复杂,而且我不喜欢它们。
http://wiki.apache.org/jackrabbit/DavidsModel规则#3建议仅在需要clone(),merge()和update()时才使用工作区,这在我看来是个很好的建议,我会在使用之前认真检查这些方法是否符合我的需要工作区。
答案 1 :(得分:0)
在将更新提交到JCR的主副本之前,工作区是您进行本地更新的JCR的工作副本。