【レポート】
16日(現地時間)より米国サンフランシスコで開催されていた2006 JavaOne Conferenceは、19日に最終日を迎えた。この日ジェネラルセッションの直後に行われたテクニカルセッション「The Java Persistence API in the Web Tier」では、EJB 3.0で新たに追加されたJava Persistence APIとJSF 1.2(JavaServer Faces)をWeb層で組み合わせて利用する方法が紹介された。スピーカーはEJB 3.0仕様のスペックリードであるLinda DeMichiel氏、Strutsの生みの親でありJSF仕様のスペックリードであるCraig McClanahan氏、そしてHibernateやJBoss Seamの生みの親であるGavin King氏の3名。そうそうたる顔触れである。
|
|
図.1 Craig McClanahan氏(左)、Linda DeMichiel氏(中央)、Gavin King氏(右) |
まず、DeMichiel氏がJava Persistence APIの概要を紹介した。Java Persistence APIはEJB 3.0(JSR 220として標準化)から利用することができるようになったBeanオブジェクトの永続化のためのAPIである。これまで永続化に関する主要なAPIとしてはJDO(Java Data Object)とEJB Entity Beanの2種類があり、両者の間に互換性が無いため混乱の元となっていた。Java Persistence APIはJDOとEntity Beanの整合性を取るために新たに設計されたもので、機能的には従来のEntity Beanに相当する、POJOベースのAPIとなっている。
Java Persistence APIでは様々なアノテーションが用意されており、それによってシンプルにエンティティを表現できるようになっている。例えば、エンティティ自身は@Entityアノテーションで表現し、idは@Idアノテーションを、リレーションシップは@OneToOne、@OneToMany、@ManyToOne、@ManyToManyなどのアノテーションを使用する。
エンティティと関連の集合はPersistence Unitと呼ばれ、これはJava Persistence APIを把握するうえでの重要な概念になっている。またランタイムコンテキストとしてPersistence Contextを利用することができる。その他、Entityを管理するためのEntityManager APIなども付属する。DeMichiel氏はこれらの機能について、簡単なソースコード例を見せながら解説した。
次にMaClanahan氏がマイクを持ち、JSF 1.2について簡単に説明した。JSFはサーバサイドアプリケーションにおいてユーザインタフェースを作成するためのAPIで、最新版であるJSF 1.2はJSR 252として仕様が定められている。JSFはJavaBeansスタイルのイベント/リスナ機構を持つほか、多彩なUIコンポーネントやコンバータ、バリデータなどが用意されている。また、UIコンポーネントをモデル層やアクションにバインディングするための表記法も用意されている。
続いて、DeMichiel氏とKing氏よりスレッドモデルとインジェクション、トランザクションなどに関する説明があった。それによれば、EntityManagerなどのステートフルなオブジェクトはスレッドセーフではなく、これらのオブジェクトのいくつかはインジェクション可能であるという。一方それ以外のステートレスなオブジェクトはスレッドセーフであり、こちらはインジェクトする側になるという。したがって前者を後者にインジェクショトしてはいけないという注意がサンプルコードと共に示された。
トランザクションについてはJTAトランザクションやリソースローカル・トランザクションなどの種類があるが、これらはEntityManagerがコンポーネント間で伝搬されることや、例外の処理方法が汚いという問題点があるという。そこでContainer-managed EntityManagerやApplication-managed EntityManagerなどを使用する方法が紹介された。その他、セッションではPersistance Contextを独自に拡張する方法などについても紹介されている。
最後に、ここまで紹介されてきた内容を適用し、Java Persistence APIとJSFを組み合わせて作成したサーブレット・アプリケーションのデモが行われた。Java Persistance APIによって、Web層に体系立ったメカニズムを導入することが可能になる。Java Persistance APIはJava EE 5に含まれているだけでなく、Java SEにも導入される予定となっているため、その有効性をよくチェックしておく必要があるだろう。
| EJB 3.0、策定へ最終調整のステージへ - JSR 220 Enterprise JavaBeans 3.0 [2005/12/22] |
| JavaOne Tokyo 2005 - スペックリードが語るEJB 3.0、Java Persistence API [2005/11/11] |
| ブロケード、SDN戦略を実現する100ギガビット対応Ethernetソリューション [16:34 5/24] |
| 太陽光発電の国内出荷が好調、累計100万件を突破 [14:39 5/24] |
| 4人が同時に違う色で書き込むことができる「インタラクティブ・プラズマディスプレイ」 [13:20 5/24] |
| 【レポート】利用頻度に応じて最適配置! ETERNUSの自動階層制御 - 富士通フォーラム2012 [10:43 5/24] |
| 近畿大学、セシウムを99%以上取り除く「ゼオCa漆喰」を開発 [10:10 5/24] |
|
フリーコム、"Verbatim"ブランドの2.5インチSSD - 120GBと240GBの2モデル [16:38 5/24] パソコン |
|
ブロケード、SDN戦略を実現する100ギガビット対応Ethernetソリューション [16:34 5/24] エンタープライズ |
|
[AKB48選抜総選挙]Google+で世界中から応援できる [16:21 5/24] エンタメ |
|
マツダ、低排出ガス車の認定を受けた商用車「タイタン」を発売 [16:17 5/24] ライフ |
|
米国にとってアジア最重要国は? 一般の米国民は"日本"が1位、有識者は"中国" [16:17 5/24] ライフ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。