エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

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上のテーブルに突っ込む ということが可能になるわけです。

f:id:taichiw:20130924021535j:plain

で、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インストール&起動

    f:id:taichiw:20130928003400p:plain

  • GITからプロジェクトをClone(clone用のURLが見つからなくて15分ほど路頭に迷う)
  • GlassFishでDB設定(そもそもローカルにDBが無かったのでそこから。mysqlだと重かったのでsqlightを使ってみる)
  • Eclipse上でアプリをGlassFishについかして、起動して、、、どや!?

404 ← いまここ。

ということで、結局今のところデモならずでタイムアップです。
なんとも歯切れの悪い。

 

【まとめ】今日は以下のキーワードを覚えました。Tryが中途半端なところで終わったのが残念。