BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Quaere:Java上的LINQ

| 作者 Rob Thornton 关注 0 他的粉丝 ,译者 高昂 关注 0 他的粉丝 发布于 2007年9月25日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

在上周的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()");

Quaere目前只完成了一个针对对象的具体实现,还有一个针对Hibernate的实现正在进行中。Hibernate的实现(以及其他具有良好的查询API的框架)应该进展得很快,Anders说,因为完成Hibernate的示例程序才花了几个小时。

一部分人认为joSQL也是与Quaere类似的API。Anders认同两者存在相似之处,但是也指出一些显著的差异:

  • Quaere对于“业务问题”的处理具有更好的内聚力
  • Quaere查询更加紧凑并且具有类型安全的特性
  • Quaere是一种可扩充语言,可以无缝地添加新的查询引擎

在讲座的最后,Noras回答了关于Quaere的一些常见疑问。他已经在Codehaus上为Quaere建立了一个项目

查看英文原文:Quaere: LINQ Arrives for Java

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

可惜啊,还是要语言层面支持才好 by Jianshi Da

可惜啊,还是要语言层面支持才好

Re: 可惜啊,还是要语言层面支持才好 by wu wenlong

是的,没有智能提示~~~如果java也有语法糖多好

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT