当我们可以使用JCR查询API时,为什么AEM / CQ中需要QueryBuilder API?前者没有提供什么?或者它只是JCR API的非SQL替代品? 我们目前正在构建一个从JCR节点获取信息的模块,并希望了解最佳方法。 谢谢。
答案 0 :(得分:5)
Query Builder构建于JCR Query API之上。查询构建器提供的JCR API不具备什么功能?恕我直言,这将是可用性。您处理谓词而不是查询的映射。开箱即用的谓词在大多数情况下都有效。限制和偏移功能就像分页情况的魅力一样。 分组让您以非常易读的方式编写复杂查询。另一个不错的功能是分面搜索,您的搜索结果可以按标签分割。查询生成器返回资源而非节点,因此您无需处理与JCR api(https://cqdump.wordpress.com/2012/11/06/cq5-coding-patterns-sling-vs-jcr-part-1/)一起出现的已检查的存储库异常。
由于它作为REST servlet公开,因此通常用于构建接口,如自定义仪表板和熟悉度帮助。
它是一种抽象,因此您可以免受较低级别的更改。以前在JackRabbit 2中工作的一些查询不适用于较新的Oak(Aem 6),但所有查询构建器仍可正常工作。
分面搜索示例:
查询构建器详细信息:http://www.slideshare.net/alexkli/cq5-querybuilder-adapttoberlin-2011