JPA 2.0を触ってみた。

iBatisの開発もほぼ終了しちゃったので、検証がてらJPAを触ってみた。どうせ、JavaEE6は使ってるし、これが使えるならベスト。

Hibarnateをはるか昔に使ったことはあるのだけど、基本的なところは変わらずっぽいかな。
もちろん、細かいところは大きく変わってたけど。

あと、GlassFishで使う前提だとDataSourceとか普通に呼び出してないので単体テストとかサンプルコードをどうしようかと思ったけど、ちょうどGlassFish3.1からはEJBContainerという仕様で組込みGlassFishを使ってテストできるみたい。すばらしい!

APIとしてはJPQLを使うか、CriteriaQueryを使うか。JPQLはNetBeansが基本的なCRUDアノテーションでガリガリ自動生成してくれることもあって使いやすい。
ただ、ちっとも型安全じゃないので、その辺はCriteriaQueryの方が良いかな。いかんせん、冗長過ぎるので、本気で使うならS2JDBCライクなラッパーが必須だけど。

あと、toString的な方法で実際に生成さるSQLを取得できないかと調べてみたけど、これは無理みたい。
その代わり、persistance.xmlをいじればログ出力が可能。これでExplainとかも取れるので安心ですね。
さすがにDBログみないと分からないという状態だとSQLレビューとかしづらすぎるしw

とりあえず、サンプルコードはいつものようにgithubに載せてます。

最近ちょっとずつ、GlassFishちゃんが可愛くなってきました>< Tom猫さんより良いかも?