JAX-RSとJPAとEclipseLink JPA-RSとRESTfulなアプリケーション : JavaOne2013 参加レポート2 #j1jp
Dong Clarke氏による、「Practical RESTful Presistence」のレポート…というよりは、セッションを聞いてわからなかったことを調べなおしたレポートです。
今もっているプロダクトがRESTfulに近い(RESTfulではない)APIということもあり、RESTfulというタイトルが気になって聴講。
知らないことが多すぎて、終わった後にひたすら調べまくって、ようやく概要の説明ができるかな、、、というレベルまできましたので、調べたことも織り交ぜつつ、整理のためにまとめてみます。
そもそもPresistenceという言葉
日本語では「永続性」と訳されるそうなのですが、データ処理の観点での完全性を実現するのに最低限必要な機能である、新規作成/参照/更新/削除を「永続性」と呼ぶことがあるそうです(by Wikipedia)。
本セッションでのPresistenceはこれについて述べていた模様。
JAX-RS
JAX-RSとは、JavaでRESTfulなwebサービスを提供するための「仕様」です。
JAX-RS自体は仕様なので、使う際にはさまざまなベンダーが提供している、実装を利用することになります。Apache CXFや、Jerseyなどがある模様。
JAX-RSを使うと /リソース/id のようなURLと、各HTTPのメソッドを対応付けたコントローラが簡単に作成できるそうです。
Java Persistence API (JPA)
JPAとはJavaEEの標準O/Rマッピング機能で、最新のJava EE7には、JPA2.1が実装されるそうです。
POJOに@Entityアノテーションを付加することで、テーブルと対応付けることができ、EntitiyManagerクラスが提供する永続化処理のメソッドが使えるようになります。
RDBのリレーションも適切に反映することができるそう。
※こちらの寺田さんのブログを参考にさせていただきました。
http://yoshio3.com/2011/12/19/java-persistence-api-for-begineers/
JAXB + JAX-RS + JPA で
JAXBはXMLを対応するPOJOにバインディングすることのできる仕様です。ということは、この3者をつかえば、RESTfulなAPIでリソースの作成や更新のデータをXMLで受け取り、そのまま対応するDB上のテーブルに突っ込む ということが可能になるわけです。
で、EclipseLink JPA-RS
…というようなアプリを、”EclipseLink JPA-RS”ってのをつかえばHTML5利用のアプリとして簡単に作れるよ!というのが本セッションのテーマ。
EclipseLinkプロジェクトとは、Eclipseプロジェクトのサブプロジェクトで、Javaの永続性関連のライブラリを提供しているそうです。
そのEclipseLinkの2.4で実装された、JPA-RS(という手法?)を使うことで、RESTfulなアプリケーションを非常に簡単に作ることができるそうです。
セッションの後半では、JPA-RSによって作られたサンプルアプリケーションのデモが行われました。
さらに、ぐぐればデモがあるよ!と紹介されていたので、
http://wiki.eclipse.org/EclipseLink/Examples/JPARS/Simple
こちらを参考に試してみようとしたんですが、、、
- 初めてのGlassFishインストール&起動
- GITからプロジェクトをClone(clone用のURLが見つからなくて15分ほど路頭に迷う)
- GlassFishでDB設定(そもそもローカルにDBが無かったのでそこから。mysqlだと重かったのでsqlightを使ってみる)
- Eclipse上でアプリをGlassFishについかして、起動して、、、どや!?
404 ← いまここ。
ということで、結局今のところデモならずでタイムアップです。
なんとも歯切れの悪い。
【まとめ】今日は以下のキーワードを覚えました。Tryが中途半端なところで終わったのが残念。
- Presistence
- Java Persistence API (JPA)
- JAX-RS
- EclipseLink
- EclipseLink JPA-RS