BT

JPA 2.0型安全クライテリアAPIに関する2つの提言

| 作者: Charles Humble フォローする 797 人のフォロワー , 翻訳者 ガーナー 淳子 フォローする 0 人のフォロワー 投稿日 2009年2月3日. 推定読書時間: 3 分 |

Java Persistence APIは2年前にJava EE 5の一部として登場し、オブジェクト関係マッピング向けのPOJO永続性モデルを提供している。これはJSR-220の一部としてEJB 3.0 ソフトウェアExpert Groupが開発した。

永続性は3つの分野から成り立っている。

  1. javax.persistenceパッケージに規定されているAPI
  2. Java Persistence Query Language (JPQL)
  3. オブジェクト関係メタデータ

JPQLは永続Javaオブジェクトの扱いを著しく改良したが、JPQLクエリは依然としてストリングとして記される。従ってクエリが強い型付けのJavaオブジェクトで実行する一方、クエリ自身は弱い型付けとなる。この手法でのクエリ生成はエラーが起きやすくなる可能性があり、バリデーション、自動修正、リファクタリングのため特定IDEのサポートを要する。

JPA 2.0はJava EE 6に含まれるJSR-317のカテゴリで開発が進められており、ストリングをベースとしないクエリ生成アプローチを提供する新しいクライテリアAPIの導入を通し、この問題に対処することを狙いとしている。Expert GroupのリーダーであるLinda DeMichiel氏はこのAPIの最新ドラフトを説明したブログを公開した(リンク)

「大まかに言うと、QueryDefinitionオブジェクトは、クエリのセマンティック構造に対応するノード群と考えることができます。つまり、
  • JPQLのFROM節の範囲変数およびその他の識別変数に対応する、ドメインオブジェクト
  • 1つあるいは2つ以上の条件式から構成されるWhere節の述語
  • 1つあるいは2つ以上の「select item」オブジェクトから成る、Select節
  • Order-byおよびgroup-byアイテム
  • サブクエリ

などです」

現時点でこの提案は、既存のJPAメカニズムからある程度の前進であると見受けられるが、多数の人々、中でもGavin King氏は、その型安全性についてはさらなる改良が可能であり、またそうすべきであると主張した。King氏のHibernate O/Rツールは型安全クライテリアAPIの使用の先駆けとなったものの1つで、EJB3に多大な影響を与えたものであるが、彼は自身の提言をExpert Groupに対して行った。彼の提言では、コンパイラ・プラグインがアプリケーション上の各永続性クラスに対しメタモデル型を構築できるよう、Java 6に取り入れられているjavax.annotation.Processorが利用されている。King氏は、彼のアプローチのさらなる詳細を説明した2つのブログ記事(1(リンク), 2(リンク))を書き、King氏と彼のチームは現在、javacと使用するためのプロトタイプ注釈プロセッサに取り組んでいる。

Expert GroupはKing氏の提言を本格的に検討しており、現在の検討素案の代替案と考えている。DeMichiel氏は次のように語った。

「議論は主として、このAPIが静的クエリ(型安全なアスペクトが確実に反映される部分)と動的クエリの両方について開発者にとってより優れた技術に結びつくことの実現に焦点を当てています。私達は、メタモデル生成アスペクトについても検討しています。」

彼女は、Expert Groupでは開発コミュニティからのフィードバックを望んでいる、と付け加えた。コメントの投稿はjsr-317-pdr-feedback at sun dot comまで。

原文はこちらです:http://www.infoq.com/news/2009/01/jpa20

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT