在07年的JavaZone大会上,Anders Noras介绍了Quaere库,他这个库比喻成Java上的LINQ。Quaere是一门DSL,任何实现了Iterable或其Queryable接口的结构,Quaere都能提供查询功能。
Noras列出的Quaere特性如下:
- 可对数组或实现Iterable接口的数据结构执行查询。
- 内部DSL(以静态引用和连贯接口[Fluent Interface]为基础)将查询语句整合在常规Java代码中。DSL不需要任何预处理或代码生成步骤。仅需要引用quaere.jar文件及其依赖项。
- 大量的查询操作,包括restriction、selection、projection、set、partitioning、grouping、ordering、 quantification、aggregation以及conversion等操作。
- 支持lambda表达式。
- 支持动态定义和实例化匿名类。
- 给Java 1.5及其后续版本增加了很多新“关键字”。
下例从一个从产品列表中得到产品名称的列表:
List products = Arrays.asList(Product.getAllProducts()); Iterable productNames = from("p").in(products). select("p.getProductName()"); |
一部分人认为joSQL也是与Quaere类似的API。Anders认同两者存在相似之处,但是也指出一些显着的差异:
- Quaere对于“业务问题”的处理具有更好的内聚力
- Quaere查询更加紧凑并且具有类型安全的特性
- Quaere是一种可扩充语言,可以无缝地添加新的查询引擎
在讲座的最后,Noras回答了关于Quaere的一些常见疑问。他已经在Codehaus上为Quaere建立了一个项目。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5871篇文章)
- Java编程开发手册 (8555篇文章)
- Java基础知识:初学者必须理解的六大问题 (76次浏览)
- struts验证框架开发详解 (48次浏览)
- 关于提高自己水平的十大技术 (47次浏览)
- Flex测试工具RIATest Beta版发布 (45次浏览)
- 100行Java代码构建一个线程池。 (40次浏览)
- JAVA基础知识:JAVA变量类型之间的相互转换 (33次浏览)
- 什么是面向接口编程 (29次浏览)
- 动态java代码的使用方法 (28次浏览)
- 程序员必读:对JAVA语言的十个常见误解 (26次浏览)
- JDBC与JNDI的区别 (26次浏览)



