CQ QueryBuilder API ..为什么?

use*_*244 2 jcr aem

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

Sha*_*ppa 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://本地主机:4502 /库/ CQ /搜索/内容/ 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