CQ QueryBuilder API ..为什么?

时间:2015-04-18 12:50:08

标签: cq5 aem jcr

当我们可以使用JCR查询API时,为什么AEM / CQ中需要QueryBuilder API?前者没有提供什么?或者它只是JCR API的非SQL替代品? 我们目前正在构建一个从JCR节点获取信息的模块,并希望了解最佳方法。 谢谢。

1 个答案:

答案 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://localhost:4502/libs/cq/search/content/querydebug.html?charset=UTF-8&facets=on&isURL=on&query=http%3A%2F%2Flocalhost%3A4502%2Fbin%2Fquerybuilder.json%3Ftype%3Dcq%3APage%26tagid%3Dmarketing%3Ainterest%2Fproduct%26tagid.property%3Djcr%3Acontent%2Fcq%3Atags

查询构建器详细信息:http://www.slideshare.net/alexkli/cq5-querybuilder-adapttoberlin-2011