ラベル JPA の投稿を表示しています。 すべての投稿を表示
ラベル JPA の投稿を表示しています。 すべての投稿を表示

2015年11月22日日曜日

EclipseLinkを使った実装例

このExampleを動かしてみる。DBをRESTで公開するというもの。
http://wiki.eclipse.org/EclipseLink/Examples/JPARS/Simple
https://wiki.eclipse.org/EclipseLink/Release/2.4.0/JPA-RS

実装については最後の方で説明する。まずはサンプルを動かしてみた記録。

基本的にこのページに書いてある通りに進めていくがせっかくなので最新版を使いたい。GlassFishは最新版のバージョン4系を使いたかったが、JDBCコネクションプールの作成でこのエラーが起きて先に進めないので諦めた。代わりにPayaraというサーバーをはじめて使ってみる。

Payaraのインストール
今回は、4.1.1.154 Full JavaEEをインストールする。$GLASSFISH_HOME/glassfish/modulesのjarの置き換えは不要だった。

②Examplesをgit clone
git clone git://git.eclipse.org/gitroot/eclipselink/examples.git

③Payaraのデータソース、JDBCリソースの設定
コンソール画面から、Resources > JDBC > JDBC Connection Poolsと進んでいき設定。GlassFishのバグが修正されており、先に進むことができる。$GLASSFISH_HOME/glassfish/domains/<your_domain_folder>/lib/extにはJDBCドライバーjarを配置しておく。その他設定値は以下の通り。driverType=4を忘れないように。DB2環境はこちらを使った。環境構築時の記録はこちら
  • Resource Type=javax.sql.DataSource
  • Datasource Classname=com.ibm.db2.jcc.DB2DataSource
Additional Propertiesは以下の通り
  • serverName=localhost
  • portNumber=50000
  • databaseName=任意(SAMPLEでもOK)
  • serverName=任意
  • password=任意
  • driverType=4

④EclipseでMavenプロジェクトのインポート

⑤Eclipseでサーバーの追加
PayaraはGlassFishとの互換性があるとのことなので、GlassFish4サーバーとして追加する。

⑥student.webのデプロイ
Eclipse上から普通にデプロイする

⑦Google ChromeにPostmanをインストールしてリクエストを送信
http://localhost:8080/student.web/persistence/v1.0/jpars_example_student/metadata
POSTするときはContent-Type=application/jsonを付けること

以上で、サンプルが動くところまでは無事確認できた。この後は実装についてだが、てっきりJAX-RSのアノテーションが出てくるのかと思いきや存在せず、student.webプロジェクトはWeaverBeanというクラス1つだけと大変シンプル。

説明としては、こちらが分かりやすかった。
http://blog.bdoughan.com/2013/04/introducing-eclipselink-jpa-rs.html

ドキュメントをほとんど見つけられなかった。


JPA実装の違い

JPA(Java Persistence API)の実装には複数あるが、どれを使うのが良いのだろうか。
Hibernateは独自機能が多そうなので、ずっと使い続けることができる状況なら良さそうだが、そうでない場合はEclipseLinkを使っておくのが無難っぽい。OpenJPAはあまり開発が活発ではないようで、JPA 2.1に対応できていない(私は2.1の新機能を使うほどJPAを使いこなすことはないと思うけど、開発が活発な方を選んでおきたい)。他には、あまり情報が集められないけどDataNucleusが面白そう。

名前 開発元 仕様 備考
EclipseLink Eclipse
Foundation
JPA 2.1, 2.0 JPA仕様の参照実装
Hibernate RedHat JPA 2.0, 2.1
OpenJPA Apache
Foundation
JPA 2.0
JPA for WebSphere Application Server IBM JPA 2.0, 2.1 JPA 2.1実装はEclipseLinkベース、JPA 2.0実装はOpenJPAベース(WebSphere Liberty Profileの場合)
TopLink Oracle JPA 2.0 JPA 2.1サポートはJavaEE7に含まれるためパッチとして提供


DockerでMQ環境を作る

DockerHubの ibmcom/mq を使う。ファイルシステムとしてtmpfsは使えないので これ を参考に/mnt/sda1に置き換える。 brew install docker docker-machine docker-machine create --drive...