【レポート】

JavaOne Tokyo 2005 - スペックリードが語るEJB 3.0、Java Persistence API

    後藤大地  [2005/11/11]

    8日から10日までの3日間、東京国際フォーラムにおいてJavaOne Tokyoが開催された。Day-2はJavaOne Tokyo 2005の最終日、3日目の催しにあたる。エンタープライズにおけるJavaとしては、次期EJBとなるEJB 3.0に大きな期待がかけられている。本稿ではEJB 3.0で導入される機能のうち、もっとも注目されているJava Persistence APIについて取り上げたセッション、The New EJB 3.0 Java Persistence APIの様子を紹介する。

    The New EJB 3.0 Java Persistence API

    現行のEJBであるEJB 2系では、一番小さい仕組みを作る場合でも、最低4つのファイルを作成し、定められている最低限のメソッドを実装しなければならない。ひとつのロジックを実装するだけでこの煩雑さである。これを複数作成し、さらにそれぞれを連帯して使うといったことになると、この煩雑さはなかなかのものになる。

    こうした状況に疑問を感じる技術者によって、もっとシンプルにエンタープライズサービスを実装する方法としてPOJO(Plain Old Java Object)をベースにしたフレームワークや実行環境の開発が行われた。SpringフレームワークやHibernateなどはそうした代表的なアプリケーションといえる。

    次期EJBの仕様策定には、こうしたPOJOベースの技術を開発した技術者が参加し、EJB 2.0とは違う方向で策定が進められた。EJB 3.0では、これまで少なくとも4つのファイルが必要だったところが、単純には1つのファイルで済むようになる。記述に必要になる量も激減する。EJB 3.0が期待されている背景にはこうした事情があるわけだ。

    さらにEJB 3.0が注目されているのは、Java Persistence APIというPersistenceに関するAPIが含まれることが明らかにされているからだ。これまでPersistence APIに関しては2つの方法があり、統一されていない状況だった。これがひとつの仕様としてJavaに含まれることから、Java Persistence APIを活用したさまざまな機能強化が期待されている。

    Sun Miscrosystems, Linda DeMichiel氏

    Sun Miscrosystems, Linda DeMichiel氏は、実際にJava Persistence APIを使って実装を行うとどうなるかといったソースコードを示しながら、Java Persistence APIの概要について説明をおこなった。また、Persistence自体はPersistence Providerによって提供されるため、特定のベンダにロックインされるものではないという点を繰り返し強調した。

    Persistence API実装例

    Java Persistence APIではエンティティを@Entityアノテーションで表現する。エンティティはPOJOそのものであり、アイデンティティには@Idアノテーションが、リレーションシップには@OneToOne、@OneToMany、@ManyToOne、@ManyToManyが使用される。

    また、エンティティと関連の集合がPersistence Unitと呼ばれ、Java Persistence APIを把握するうえでの重要な概念になっている。またPersistence Contextもあり、Persistence ContextはJTAトランザクションとともに複数のコンポーネントにまたがってプロパゲートされることができる。

    JBoss, Gavin King氏

    Linda DeMichiel氏に引き続き、JBoss, Gavin King氏がより実装の観点に立脚したEJB 3.0の説明を行った。Entity Manager APIが実質的にSQLやEJB QLの操作に対応することになる。Entity Manager APIでは処理の前に処理を挿入したいといったこともあり、そういった場合には@EntityListenerアノテーションを使ってリスナーと関連づけることで実現できるという。

    Entity Manager API

    Java SE 5.0から導入されたアノテーションは、Javaの機能をさまざまな点で格段に別のものに引き上げたといえる。従来であればインターフェースを実装しアクションを登録しといった処理が必要だった部分が、すべてアノテーションを経由して接続可能になっている。

    Java Persistence APIはもともとJava EEの機能として設計実装されてきたが、より一般化され、もはやJava EEに限らずJava SEといったほかのプラットフォームでも使用される機能と位置づけられる。Java EEのみならず、Java SE 6 "Mustang"以降のJavaに反映される重要な機能だ。今後の進展が注目されることになりそうだ。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン