JPA2タイプセーフクライテリアを使ってみた
まずは環境を準備。
- JBoss AS 7を用意。
- Eclipse3.7.1を用意。
- JBoss Toolsをマーケットからインストール。
- ランタイム設定でJBoss AS 7を設定しておく。
- forge consoleビューを表示。
- 三角ボタンでforgeを起動。
- プロジェクトを作成する(好きなディレクトリに移動して)
$ new-project --named jpa2sample --topLevelPackage sekky.jpa2sample
? Use [/home/sekky/dev/jpa2sample] as project directory? [Y/n] Y
- JPA2を追加(入力欄はTABで補完アリ)
$ setup persistence
? [provider=ARG (of type org.jboss.forge.spec.javaee.jpa.api.JPAProvider)]: HIBERNATE
? [container=ARG (of type org.jboss.forge.spec.javaee.jpa.api.JPAContainer)]: JBOSS_AS7
? The JPA provider [HIBERNATE], also supplies extended APIs. Install these as well? [y/N] N(きっと移植なんて未来永劫ないけどね)
$ setup scaffold
? No scaffold type was selected, use default (JSF)? [Y/n] Y
? Scaffold provider [faces] is not installed. Install it? [Y/n] Y
? Facet [forge.maven.WebResourceFacet] requires packaging type(s) [war], but is currently [jar]. Update packaging? (Note: this could deactivate other plugins in your project.) [Y/n] Y
- pomを修正する(メタモデルクラスを自動生成する注釈プロセッサー)
http://docs.jboss.org/hibernate/jpamodelgen/1.0/reference/en-US/html_single/参照
ここまでで何とか準備が完了。
これでEntityを作りCriteriaを投げる。
Entity作りは省略。ここら辺はJPAを調べてくださいな。
Criteriaの例はこんな感じ。
流れるようなインターフェースではなく、APIの使い勝手は正直微妙な感じがする。
が!タイプセーフなおかげでEntity(DB)修正しても怖くない!
一気に書き上げてるので間違いがあるかも。
何かあればTwitterにでもどうぞ。