BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Java用のLINQ現る

Java用のLINQ現る

Anders Norasは先週JavaZoneにおいて、Java用のLINQと名付けられたQuaereライブラリを発表した(source)。Quaere(サイト・英語)はIterableとQueryableインターフェースを実装している、あらゆるストラクチャに対応するクエリ機能を備えたDSLである。

Nnoras氏はQuaereの機能を下記のように述べている。

  • Iterableインターフェースを実装したデータ、もしくは配列ストラクチャに対するクエリ実行能力
  • 通常のJavaコードを用いたクエリ言語を可能にさせる内部DSL(静的インポートと流動性インターフェースに基づいている)quaere.jar file(とその依存物)にリファレンスを追加するのみでプロセッシングとコード生成のステップは必要とされない
  • リストリクション、セレクション、プロジェクション、セット、パーティショニング、グルーピング、オーダリング、数量化、集合化、コンバージョンオペレーターを含む膨大な数のクエリオペレータ
  • lambda表現へのサポート
  • 匿名のクラスをダイナミックに定義しインスタンス化する機能
  • Java 1.5とそれ以降のバージョンに対応する新たなキーワード

下記は製品リストから製品名リストの受け取りの一例である。

List products = Arrays.asList(Product.getAllProducts()); 
Iterable productNames =
 from("p").in(products).
 select("p.getProductName()");

Quaereは現在一つの実装(オブジェクト用)しか備えていないが、部分的にHibernate用の実装が行われている。Hibernate実装はデモにおいて2,3時間しか費やさなかったように迅速に進行するべきであることをAnders氏は述べている。

何人かはjoSQLが類似したAPIであることを言及(source)している。Anders氏自身もその類似点を提示している(source)が、いくつかの相違点も指摘している。

  • Quaereは”ビジネス問題”を用いるとより良い結合性をもたらす。
  • Quaereクエリは更にコンパクトでタイプの安全性を備えている。
  • Quaereは新たなクエリエンジンのシームレスな追加を許容する拡張可能な言語である。

最後に、Noras氏はQuaereに関するよくある疑問(source)に答えるためCodehausにそのためのプロジェクトを発足(サイト・英語)した。

原文はこちらです:http://www.infoq.com/news/2007/09/quaere-linq

この記事に星をつける

おすすめ度
スタイル

BT