2

从 JCR 和 Jackrabbit 开始,我不明白工作空间是什么以及它的用途。为什么首先将其命名为工作区?存储库像数据库,工作区像表,项目像行(或几乎)?

4

2 回答 2

10

每个 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() 时使用工作区,在我看来这是个好建议,我会认真检查这些方法是否在使用工作区之前满足我的需求。

于 2013-07-22T06:15:51.997 回答
0

工作区是您在将更新提交到 JCR 的主副本之前对其进行本地更新的 JCR 的工作副本。

于 2013-07-21T13:08:54.687 回答