JPA2.0
JPAで*1エンティティー間の多対一のリレーションを表現する@ManyToOneですが、こやつの振る舞いがベンダー間でちょっと違うようなのでメモしておきます。 振る舞いの違い どう違うのかというと、参照先のエンティティが物理的に存在しなければ取得時にEntity…
今までJPA2.0のCriteriaを試してみた感想とかそこらへんを書いていこうと思います。 結論から言うとCriteriaはJavaによるプログラミングを追求しているって感じじゃないのかなと*1。 ANDやORの使い方について この感想を書くにはGoogle Collections Library…
さて、間隔が開きすぎてしまいましたが、Criteriaでの外部結合です。そういえばNetBeans6.8でやってるんですが、やはりMetamodelの自動生成機能はありません・・・。これは正直かなり悲しいです。というかMetamodelを自力で書くの超メンドクサイです・・・。…
今回はJoinです。Joinの中でのJPQL独自と言っていいパス式によるJoinを試してみたいと思います。下記のようなEntityがあるとします(CustomerとDiscountCodeの関係は1対多 多対1。今回はMetamodelは省略) @Entity @Table(name = "CUSTOMER") public class C…
昨日下書きの途中まで書いていた内容に関する事をずばりid:trygunさんがこちらにて指摘されています。 そうなんです。JPA2.0のCriteriaでは「or」の使い方が特殊というか、SQLやJPQL的な書き方と違うようです。ちなみに自分は最初ハマりましたw以下に出てく…
今回はMetamodelAPIを使ってSQLでいうところのWhere句とかそこらへんとかやってみます。んで、いろいろやる前にCriteriaBuilder、CriteriaQueryおよびRoot作成までの処理。 CriteriaBuilder qb = em.getCriteriaBuilder(); CriteriaQuery<Customer> cq = qb.createQuer</customer>…
さて、いよいよMetamodelの作成。 Metamodelにいろいろある仕様を簡単に列挙してみます。 entityというパッケージにあるCustomerというエンティティクラス*1に対するMetamodelのクラスはentityパッケージ内にCustomer_というクラス名で作成される*2 Metamode…
JPA2.0はまだリリースされていない状況なのでJSRのサイトにあるProposed Final Draft(最終提案ドラフト、最終ドラフト提案??)の資料を元に試していこうと思います。ちなみに英語はからきし駄目ですが、サンプルのソースコード見ればなんとかなるんじゃね?…
NetBeans6.8のBetaがリリースされました。 JavaEE6への対応が着々と進んでいるようですが、ここらで1つJPA2.0を実際に試してみようと思います。ちなみにJPA2.0は「JSR317」として「Java Persistence2.0」という名前で提案されています。今後はJPAとは言わな…