写点什么

Quaere:Java 上的 LINQ

2007 年 9 月 24 日

在上周的 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()); <br></br>Iterable productNames =<br></br> from("p").in(products).<br></br> 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

2007 年 9 月 24 日 17:343402
用户头像

发布了 74 篇内容, 共 89397 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

「生产事故」MongoDB复合索引引发的灾难

Kerwin

数据库 mongodb

排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时

蚂蚁集团移动开发平台 mPaaS

小程序 问题排查 mPaaS

DB-Engines 12月数据库排名: PostgreSQL拿下同期涨幅榜冠军,有望获得「2020年度数据库」荣誉?

华章IT

数据库 postgresql

关于这 2 年来,做开源项目的一些感慨

贝克街的天才

Java 开源 开源项目 开源社区

药品安全追溯系统开发区块链技术

13828808769

安全 区块链+

《前端算法系列》数组去重

徐小夕

Java 面试 算法 前端

通过docker获取系统运行情况的实用命令

晓川

TronChain波场链系统软件开发|TronChain波场链APP开发

开發I852946OIIO

系统开发

当我们谈前端性能的时候,我们谈的是什么

vivo互联网技术

性能优化 前端 前端性能优化 页面

G20200388020528第二周作业

走走,停停……

即构科技肖传发:即刻构建在线教育的音视频互动场景

ZEGO即构

警察营救安徽望江县17岁女生跳河自尽过程中,现场看热闹的旁观者们在做什么?

wbliu85

读写分离这个坑,你应该踩过吧?

楼下小黑哥

MySQL 主从同步 读写分离

5种分布式事务方案与阿里的 Seata 中间件

Bruce Duan

分布式事务 seata

《迅雷链精品课》第十一课:区块链常用共识算法介绍

迅雷链

区块链

大厂也在用的 6种 数据脱敏方案,严防泄露数据的 “内鬼”

程序员内点事

Java 数据脱敏;

2020 阿里云原生实战峰会即将开幕 云原生落地的正确姿势

阿里巴巴云原生

阿里巴巴 阿里云 开发者 云原生 实战

数据结构与算法系列之散列表(一)(GO)

书旅

go 数据结构 算法

架构师训练营第一期 - 第十一周课后作业

卖猪肉的大叔

极客大学架构师训练营

AR智能眼镜会成未来趋势

anyRTC开发者

人工智能 音视频 WebRTC RTC

悟空活动中台-打造 Nodejs 版本的MyBatis

vivo互联网技术

Java 前端 mybatis nodejs

为什么建议使用你 LocalDateTime ,而不是 Date?

Bruce Duan

LocalDateTime Date

一个依赖搞定 Spring Boot 反爬虫,防止接口盗刷!

Bruce Duan

反爬虫组件 kk-anti-reptile

话题讨论 | 作为地地道道的程序员半年内都没摸过代码是什么样的体验?

xcbeyond

话题讨论

公安舆情分析重点人员管控系统搭建解决方案

t13823115967

智慧公安 舆情分析

智慧警务系统开发解决方案,大数据可视化平台建设

WX13823153201

智慧警务系统开发

区块链应用落地,区块链电子票据应用平台搭建

t13823115967

区块链+ 区块链应用 区块链落地开发

从容应对11.11大促 京东智联云云硬盘做对了哪些事?

京东智联云开发者

云计算 高可用 云硬盘

(G20200388020528)第一周练习

走走,停停……

Redis 如何实现点赞、取消点赞

Bruce Duan

Redis实现点赞

ZEGO即构科技荣获36氪【WISE2020中国新经济之王最具影响力企业】

ZEGO即构

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Quaere:Java上的LINQ-InfoQ